我想使用SetWindowHookEx在创建窗口之前在进程中捕获WM_CREATE(或HCBT_CREATEWND)消息。

使用hMod和dwThreadId可以定义钩子(Hook)是否在系统范围内(通过将hMod设置为DLL的gInstance并将dwThreadId设置为0),还可以使用它来监视进程中的单个线程(hMod = 0,并且dwThreadId = ThreadToMonitorId)。

但是,我想监视多个线程。可能吗?我想我可以简单地为多个线程调用SetWindowHookEx,但我不希望这样做,因为这会使事情变得更复杂。还有其他选择吗?

谢谢!

最佳答案

一个进程创建一个拥有一个UI窗口的多个线程是非常不寻常的。有时,这是一个互操作窗口,有意隐藏了该窗口,您不太可能想知道它。使用Spy ++验证您的假设,所有者线程ID显示在窗口属性的“进程”选项卡中。

如果确实有多个线程需要创建窗口,那么您将需要设置单独的钩子(Hook)。

关于c++ - SetWindowsHookEx在整个过程而不是整个系统范围内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4360606/

10-13 08:29