一部のメッセージタイプはウィンドウプロシージャに直接送信され、他のタイプはスレッドのメッセージキューに送信されることを認識していますが、メッセージが送信または投稿されるかどうかを判断する方法が見つかりません。
MSDNは半分役に立ちます。それは何が起こっているのかを説明しましたが、それが与える例はおそらく網羅的ではありません。
送信されたメッセージと投稿されたメッセージの明確なリスト、またはメッセージのタイプを決定する方法はありますか?
一部のメッセージタイプはウィンドウプロシージャに直接送信され、他のタイプはスレッドのメッセージキューに送信されることを認識していますが、メッセージが送信または投稿されるかどうかを判断する方法が見つかりません。
MSDNは半分役に立ちます。それは何が起こっているのかを説明しましたが、それが与える例はおそらく網羅的ではありません。
送信されたメッセージと投稿されたメッセージの明確なリスト、またはメッセージのタイプを決定する方法はありますか?
InSendMessage
またはを使用して、関数の呼び出しによって送信されたメッセージを処理しているかどうInSendMessageEx
かを判別します。SendMessage
また、一部のメッセージは投稿も送信もされません。これは、WM_PAINT、WM_TIMER、およびその他のいくつかの場合です。ポストされたメッセージのキューが空の場合、GetMessage によって単に返されます。
どのアプリケーションをフックしようとしているのかはわかりませんが、そのような質問をしなければならない場合は、少し怖いです. 開発者にとって、ユーザーから報告されたクラッシュに時間を費やし、その原因が不正なコードを挿入している他のアプリケーションにあることが判明することほどイライラすることはありません。慎重に踏んでください!
また、Spy++ (Visual Studio に同梱されているツール) は、特定のライブ Windows アプリでどのメッセージが投稿/送信/受信されたかを示します。