我想拦截在不同进程中发送到窗口的消息。做这个的最好方式是什么?当我使用WH_GETMESSAGE钩子时,我看不到消息,我不确定我是否可以跨进程子类化?任何帮助将不胜感激。
答案 0 :(得分:11)
您需要将自己的代码注入拥有您希望拦截来自的窗口的进程中。幸运的是,SetWindowsHookEx()
使这一点变得相当简单,尽管如果你刚才用它来进行过程中的连接,你可能会遇到一些麻烦。
我可以推荐两篇关于这个主题的优秀文章:
答案 1 :(得分:7)
如果邮件已发送而非发布,WH_GETMESSAGE
将无法看到。您需要WH_CALLWNDPROC
。如果您正在跨进程工作,则需要在DLL中使用系统范围的挂钩。你没有提到你如何调用SetWindowsHookEx,所以我不知道你的钩子是否因为它不是全局的而失败,或者因为你要找的消息是发送。
如果您以前没有使用系统范围的挂钩,我在我的网站here上有一个系统范围挂钩示例。这是一个键盘钩,但原理是一样的。
如果我无意中在这里说话,请阻止我 - 你的问题太短了我无法推断你的专业水平。但是搞乱钩子确实意味着一些经验......