C#을 기준으로 질문은 했지만 어차피 user32.dll을 사용하기 때문에 C++이나 C로 대답해주셔도 상관없습니다!
일단 제가 만들고자 하는 프로그램은 간단한 메크로 프로그램입니다.
A라는 기존에 존재하는 프로그램이 있습니다. 제 프로그램을 실행하고 제 프로그램에서 특정 버튼을 누르면 A라는 프로그램에 특정 버튼을 작동시키는 것입니다.
Spy++를 통해 몇가지 정보를 찾아보았습니다.
일반창에는 창 핸들, 창 프로시저, 컨트롤아이디,
그리고 프로세스 창에는 프로세스ID와 스레드ID가 찍힙니다.
프로세스 하위에 스레드가 들어가고, 프로세스 아이디와 스레드 아이디는 실행시마다 동적으로 변하는 값입니다.
창 핸들값도 실행할때마다 가변적으로 변하더라구요.
근데 창 프로시저값과, 컨트롤 ID의 경우 실행시 고정으로 값이 변하지 않는 것을 발견하였습니다.
기본적으로 창의 이름 캡션값(FindWindow)을 이용하면 창 핸들러 값을 가져올 수 있습니다.
그리고 창 핸들러 값을 이용해서 프로세스아이디와 스레드 아이디도 가져올 수 있습니다.
그리고 창 핸들러 값을 이용해서 컨트롤 아이디(GetDlgCtrlID)를 가져올 수 있습니다.
여기까지는 찾아보았습니다.
어차피 프로그램의 이름을 알고 있기 때문에 ProcesID값은 쉽게 찾을 수 있습니다. 그리고 처음에 캡쳐를 한번 해두면 해당 버튼의 컨트롤 아이디를 찾을 수 있습니다.
그렇다면 제가 ProcessID를 알고있고 컨트롤ID를 알고 있을 때 창 핸들러를 찾을 수 있는 방법이 있는지요?
또한, 제가 맨땅의 해딩중이라 인터넷에서 어떤식으로 검색하면 좋을지 표준 용어 정리를 도와주셔도 좋습니다 :)