窓が

2017-10-03 7 views
1

イム(Imがオーバーレイを作成する)窓が

ので、私は 新しいウィンドウ位置を再スキャンすることができますし、それに応じて を私の窓を変更するリモートプロセスが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

低レベルサポートの場合は、WH_CALLWNDPROCまたはWH_CALLWNDPROCRETを指定してSetWindowsHookExを使用します。 x64 Windowsでは、32ビットのdll、64ビットのdllを作成し、32ビットのプロセスと64ビットのプロセスの両方にそれぞれのdllを呼び出す必要があります(32ビットプロセスでは設定できないため64ビットフック、およびその逆)。次に、必要に応じて、注入されたDLLからメインプロセスにIPCメカニズムを記述します。しかし、効率的なCPU使用率を確認してください! 「ドラッグ中にウィンドウの内容を表示する」を有効にすると、ウィンドウ移動中に多くのWM_MOVEメッセージが表示されます。

上位レベルのサポートの場合は、EVENT_OBJECT_LOCATIONCHANGEでSetWinEventHookを使用し、最上位レベルのウィンドウに対してのみ処理していることを確認してください。

より信頼性が高いため、前者が通常よりも優先されます。