我想要捕获所有当前窗口上的WM_SETFOCUS消息。那么最好的方法是什么呢?
我认为SetWindowsHookEx可以用于此目的。它可以与WH_CALLWNDPROC或WH_MSGFILTER一起使用吗?
此外,它提到钩子程序必须在单独的DLL中。这是必须的吗。我不能在安装钩子的同一个DLL中有钩子过程。
发布于 2010-01-26 17:28:20
是的,您可以在安装钩子的同一个DLL中使用钩子进程。我相信,您所讨论的需求与您在另一个进程中设置windows钩子有关。
我不熟悉WH_CALLWNDPROC钩子类型,但我相信您可以使用WH_CBT,它被描述为对“基于计算机的培训”应用程序很有用,但似乎也有一些非常有用的功能。通知它的事件之一是:
一个窗口即将接收键盘焦点。
发布于 2010-01-26 17:30:52
钩子proc必须在dll中,但它不必是与用于安装钩子的dll不同的dll。文档提到“单独的dll”的原因是因为他们假设安装钩子的代码将在exe中,而不是dll中。
WH_CALLWNDPROC钩子应该能看到WM_SETFOCUS消息,我不期望WH_MSGFILTER钩子能看到它们,但我不确定。
您应该知道,如果您打算接收WM_SETFOCUS消息,这将不会阻止焦点被设置到窗口。
无论你的问题是什么,windows钩子都不是最好的解决方案。如果您能更具体地说明您正在尝试做什么,我们可能会更有帮助。
https://stackoverflow.com/questions/2138431
复制相似问题