게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C# 윈도우 API질문입니다~ : )
게시물ID : programmer_5767짧은주소 복사하기
작성자 : 모찡
추천 : 0
조회수 : 1076회
댓글수 : 4개
등록시간 : 2014/10/04 17:38:48
옵션
  • 베스트금지
  • 본인삭제금지
C#을 기준으로 질문은 했지만 어차피 user32.dll을 사용하기 때문에 C++이나 C로 대답해주셔도 상관없습니다!

일단 제가 만들고자 하는 프로그램은 간단한 메크로 프로그램입니다.
A라는 기존에 존재하는 프로그램이 있습니다. 제 프로그램을 실행하고 제 프로그램에서 특정 버튼을 누르면 A라는 프로그램에 특정 버튼을 작동시키는 것입니다.


Spy++를 통해 몇가지 정보를 찾아보았습니다.

일반창에는 창 핸들, 창 프로시저, 컨트롤아이디, 
a.png

그리고 프로세스 창에는 프로세스ID와 스레드ID가 찍힙니다.
b.png


프로세스 하위에 스레드가 들어가고, 프로세스 아이디와 스레드 아이디는 실행시마다 동적으로 변하는 값입니다.
창 핸들값도 실행할때마다 가변적으로 변하더라구요.

근데 창 프로시저값과, 컨트롤 ID의 경우 실행시 고정으로 값이 변하지 않는 것을 발견하였습니다.


기본적으로 창의 이름 캡션값(FindWindow)을 이용하면 창 핸들러 값을 가져올 수 있습니다.
그리고 창 핸들러 값을 이용해서 프로세스아이디와 스레드 아이디도 가져올 수 있습니다.
그리고 창 핸들러 값을 이용해서 컨트롤 아이디(GetDlgCtrlID)를 가져올 수 있습니다.
여기까지는 찾아보았습니다.



어차피 프로그램의 이름을 알고 있기 때문에 ProcesID값은 쉽게 찾을 수 있습니다. 그리고 처음에 캡쳐를 한번 해두면 해당 버튼의 컨트롤 아이디를 찾을 수 있습니다. 

그렇다면 제가 ProcessID를 알고있고 컨트롤ID를 알고 있을 때 창 핸들러를 찾을 수 있는 방법이 있는지요?

또한, 제가 맨땅의 해딩중이라 인터넷에서 어떤식으로 검색하면 좋을지 표준 용어 정리를 도와주셔도 좋습니다 :)


전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호