Please Enable JavaScript!
Gon[ Enable JavaScript ]

원하는 프로그램의 핸들 얻기

기타 언어/C# & MFC
반응형

원하는 프로그램의 핸들 얻기


프로그램에서 특정 프로세스를 다루고자 할 때 핸들 정보를 알아야 한다.

핸들 정보를 알지 못하더라도 최소한 프로그램 Window Caption 명을 알아야한다.

FindWindow  API 의 인자로 Window Caption 명을 넘기면 리턴값으로 핸들을 얻을수

있기 때문이다.

 

Visual Studio 에서는 이 정보를 쉽게 알수 있도록 Spy++ 유틸리티를 제공한다.

내가 사용하는 프로그램은 Visual Studio 2005 이다.

Visual Studio Tools Spy++ 클릭한다

Spy++ 실행 되었다면 현재 프로세스에 대한 정보리스트를 볼수 있다

리스트중에서 하나를 선택한후 오른쪽마우스 클릭후 Properties 선택한다

그러면 프로세스의 속성정보에 대해 나오는데 Window Caption, Window Handle,

창의 크기 등에 대한 정보를 볼수 있다

이 정보를 바탕으로 프로세스를 제어 할수 있는데

FindWindow 함수로 핸들을 얻은후 GetWindowLong HINSTANCE 얻는다.

m_hWnd = FindWindow(NULL, programName);

HINSTANCE hInst = (HINSTANCE)GetWindowLong(m_hWnd->m_hWnd, GWL_HINSTANCE);

 

인스턴스를 얻었으면 후킹을 위한 함수도 등록가능하다.

hHk = SetWindowsHookEx(WH_MOUSE, lpfnHook, hInst, 0);

lpfnHook 는 후킹을 위한 함수 포인트 이다. 이렇게 등록하게 되면

핸들을 얻는 프로그램에서 일어나는 윈도우 이벤트를 받을수 있다.

마우스 이벤트, 키보드 이벤트 등등을 알아 낼수 있는것이다.

 

이 이벤트라는 것이 어떤것인지 Spy++ 로 알아본다.

먼저 보고자하는 프로그램을 선택한후 Ctrl + M 이나 Log Messages 를 선택한다

화면이 실행되었으면 Message 탭으로 가서 보고자 하는 Message 만 체크한다.

엄청난 수의 이벤트가 일어나므로 보고자하는 것만 1~2 개정도 선택하도록 한다

확인을 누른후 선택한 프로그램을 활성화 시킨후 마우스나 키보드등을 작동시켜보다

그러면 그 정보에 대한 로그등을 볼수 있다. 이 로그를 분석하면 어떤 메시지일 때 무슨일이

일어나는지 쉽게 알수 있다
반응형
Posted by 녹두장군1
,