• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SetWindowsHookEx(グローバルフック)の質問)

SetWindowsHookEx(グローバルフック)でメッセージをすりかえることは可能でしょうか?

このQ&Aのポイント
  • SetWindowsHookExでグローバルフックしてメッセージをすりかえることはできるのか疑問です。
  • WH_CALLWNDPROCで受け取ったメッセージを書き換えるだけでは無理です。
  • WH_CALLWNDPROCのCallWndProcではメッセージを変更できるのか疑問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.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/

sha-girl
質問者

お礼

ご回答ありがとうございます。 「Advanced Windows」は手元にあったりしますが、 これを機会によく目を通してみようと思います。 URLも大変参考になりました。

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

用途が違いますね。 >例えばWM_KEYDOWNが送られてきたら、それを無視して 特に、WM_KEYDOWNのようにPostされるものはWH_GETMESSAGEで無視することは可能です。 ちなみにWH_CALLWNDPROCでは取得すらできません。 Sendで送られるメッセージもすり替えはたい場合はウィンドウのサブクラス化でしょう。 ただし、DLLを対象のプロセスに突っ込む荒業が必要ですが。

sha-girl
質問者

お礼

いつもご回答くださり有難うございます。 >ちなみにWH_CALLWNDPROCでは取得すらできません。 すみません。取得出来ませんね。理解不足でした。 ところでspy++でいう WH_GETMESSAGEがP「ポストしたメッセージ」 WH_CALLWNDPROCがS「送出するメッセージ」 WH_CALLWNDPROCRETがR「送出したメッセージの戻り値」 にあたるということになるのでしょうか? >Sendで送られるメッセージもすり替えはたい場合はウィンドウのサブクラス化でしょう。 >ただし、DLLを対象のプロセスに突っ込む荒業が必要ですが。 サブクラス化はdllも同じプロセスに属す必要があるんですね。 この方法についてどこか参考になるサイト、あるいは書籍ってありますか?

関連するQ&A