2017-02-15 2 views
1

누군가가 특정 창에서 특정 단추를 마우스로 클릭하는 것을 가로 채기 위해 사용할 Windows API 함수를 찾아 낼 수 있습니까? 저는 스파이 ++를 사용했고 파인더 툴을 윈도우의 버튼이나 다른 것으로 옮기면 핸들러와 다른 것들에 대한 정보를 읽을 수 있다는 것을 알았습니다. 그래서 어떤 행동이 수행되기 전에 마우스 클릭을 가로 채서 코드를 삽입하는 방법이 있습니다. 이에 대해 어떤 생각이라도 공유해 주셔서 감사합니다.가로 채기 마우스 클릭

답변

2
나는이 접근 할 수있는 몇 가지 방법을 생각할 수

:

  1. 대상 윈도우의에서 WH_CALLWNDPROC 메시지 후크를 설치 SetWindowsHookEx()을 사용할 수 있습니다 thread를 호출 한 다음 훅 콜백은 대상 창 자체에 WM_LBUTTON(DOWN|UP)과 같은 창 메시지를 처리하거나 대상 창 부모에 BN_CLICKED과 같은 창 메시지를 처리 ​​할 수 ​​있습니다. 주의 할 점은 타겟 프로세스에 훅을 삽입 할 수 있도록 DLL에 콜백을 구현해야한다는 것입니다. GetWindowThreadProcessId()을 사용하여 대상 창의 스레드 ID를 가져올 수 있습니다.

    이 변형은 SetWindowsHookEx() 대신 WH_GETMESSAGE 훅을 설치 한 다음 PostMessage()을 사용하여 대상 창에 사용자 지정 창 메시지를 게시 할 수 있습니다. 그런 다음 후크 콜백은 SetWindowLongPtr() 또는 SetWindowSubclass()을 사용하여 추가 메시지 처리를 위해 대상 윈도우를 직접 및/또는 상위 클래스로 서브 클래스화할 수 있습니다.

  2. SetWinEventHook()을 사용하여 EVENT_OBJECT_INVOKED 이벤트 (예 : 단추 클릭)를 모니터링 할 수 있습니다. WINEVENT_OUTOFCONTEXT 플래그를 사용하는 경우 DLL이 필요하지 않지만 설치 스레드가 활성 메시지 루프를 필요로하므로 프로세스 경계에서 이벤트를 처리 할 수 ​​있습니다.

+0

이것은 가장 좋은 답변이지만 코드 예제가 필요합니다. – FindOutIslamNow

1

Windows 후크를 설정하려면 SetWindowsHookEx API를 호출해야합니다. 여기에 소스 코드와 함께 기사입니다, 그것은 그것의 사용법을 보여줍니다 Hooks and DLLs

+0

@RemyLebeau 나는 그것을하는 한 방법을 게시했습니다. 내 답변과 다를 경우 답변을 별도로 게시하십시오. –