- ベストアンサー
SetWindowsHookEx(グローバルフック)でメッセージをすりかえることは可能でしょうか?
- SetWindowsHookExでグローバルフックしてメッセージをすりかえることはできるのか疑問です。
- WH_CALLWNDPROCで受け取ったメッセージを書き換えるだけでは無理です。
- WH_CALLWNDPROCのCallWndProcではメッセージを変更できるのか疑問です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>WH_GETMESSAGEがP「ポストしたメッセージ」 >WH_CALLWNDPROCがS「送出するメッセージ」 >WH_CALLWNDPROCRETがR「送出したメッセージの戻り値」 というか、対象のウィンドウプロシージャにおいて、 P:PostMessageで受け取ったメッセージ S:SendMessageで受け取ったメッセージ R:SendMessageの受け取ったときのプロシージャの戻り値 と考えたほうがわかりやすいかと。 #RがSendMessageのみなのは、呼び出し元がPostMessageのときは終了を待たないため。 >>Sendで送られるメッセージもすり替えはたい場合はウィンドウのサブクラス化でしょう。 >>ただし、DLLを対象のプロセスに突っ込む荒業が必要ですが。 >サブクラス化はdllも同じプロセスに属す必要があるんですね。 >この方法についてどこか参考になるサイト、あるいは書籍ってありますか? ここらへんかな? http://www.microsoft.com/japan/info/press/JPN_ViewMsPress.asp?Book_id=39&list_id=2 http://ruffnex.oc.to/kenji/text/api_hook/
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
用途が違いますね。 >例えばWM_KEYDOWNが送られてきたら、それを無視して 特に、WM_KEYDOWNのようにPostされるものはWH_GETMESSAGEで無視することは可能です。 ちなみにWH_CALLWNDPROCでは取得すらできません。 Sendで送られるメッセージもすり替えはたい場合はウィンドウのサブクラス化でしょう。 ただし、DLLを対象のプロセスに突っ込む荒業が必要ですが。
お礼
いつもご回答くださり有難うございます。 >ちなみにWH_CALLWNDPROCでは取得すらできません。 すみません。取得出来ませんね。理解不足でした。 ところでspy++でいう WH_GETMESSAGEがP「ポストしたメッセージ」 WH_CALLWNDPROCがS「送出するメッセージ」 WH_CALLWNDPROCRETがR「送出したメッセージの戻り値」 にあたるということになるのでしょうか? >Sendで送られるメッセージもすり替えはたい場合はウィンドウのサブクラス化でしょう。 >ただし、DLLを対象のプロセスに突っ込む荒業が必要ですが。 サブクラス化はdllも同じプロセスに属す必要があるんですね。 この方法についてどこか参考になるサイト、あるいは書籍ってありますか?
お礼
ご回答ありがとうございます。 「Advanced Windows」は手元にあったりしますが、 これを機会によく目を通してみようと思います。 URLも大変参考になりました。