2017-10-03 10 views
1

임 (임은 오버레이를 작성하는)윈도우가

그래서 새로운 창 위치를 다시 스캔 할 수 있습니다 따라 을 내 창을 변경 원격 프로세스가 WM_MOVE 메시지를받을 때 감지하려고 WM_MOVE 메시지를받을 때 감지하는 방법

DLL 주입을 사용해야 할 수도 있지만 Microsoft 문서는 너무 끔찍하고 모순되어 분사를 수행하는 데 필요한 최소한의 양을 파악할 수없고 WM_MOVE 메시지가 원격 프로세스로 전송되었을 때 알 수 있습니다.

+0

더 정확하게 문제를 설명하고 달성하고자하는 것을 기술하십시오. – tambre

+3

내부 구현 세부 사항을 다루지 마십시오. 대신 [WinEvents] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd373889.aspx), [EVENT_OBJECT_LOCATIONCHANGE] (https://msdn.microsoft.com) 모니터링 등의 표준 인프라를 사용하십시오. /en-us/library/windows/desktop/dd318066.aspx) 이벤트. – IInspectable

+0

'원격 프로세스 '란 무엇을 의미합니까? – MKR

답변

1

낮은 수준의 지원을 위해 SetWindowsHookEx를 WH_CALLWNDPROC 또는 WH_CALLWNDPROCRET과 함께 사용하십시오. x64 Windows에서는 32 비트 dll, 64 비트 dll을 작성해야하며 32 비트 프로세스와 64 비트 프로세스 모두 각각의 dll로 호출해야합니다 (32 비트 프로세스는 설정할 수 없기 때문에 64 비트 후크 및 그 반대로). 그런 다음 필요한 경우 주입 된 dll에서 주 프로세스로 IPC 메커니즘을 작성합니다. 그러나 효율적인 wrt CPU 사용을 확인하십시오! "끌 때 창 내용 표시"를 사용하면 창 이동 중에 많은 WM_MOVE 메시지가 나타납니다.

높은 수준의 지원을 위해서는 SetWinEventHook을 EVENT_OBJECT_LOCATIONCHANGE와 함께 사용하고 최상위 창만 처리해야합니다.

일반적으로 후자가 더 신뢰할 수 있기 때문에 후자가 전자보다 선호됩니다.