SetWindowsHookEx()仅适用于当前进程

时间:2017-01-17 09:46:37

标签: c++ windows hook setwindowshookex

我试图挂钩由单独进程创建的窗口的WM_PAINT事件,而我知道的唯一选项就是使用SetWindowsHookEx()

我有一个运行以下代码的C ++可执行文件:

HMODULE hDllInstance = LoadLibrary(L"NiceLibrary");
HOOKPROC pOverlayHook = (HOOKPROC) GetProcAddress(hDllInstance, "OverlayHook");
SetWindowsHookEx(WH_GETMESSAGE, pOverlayHook, hDllInstance, 0 /*dwThreadId*/);

和“NiceLibrary.dll”包含函数OverlayHook(...)。我在函数中放置了一个printf(“bla”),以监视它何时被调用。出于某种原因,“bla”仅出现在当前进程生成的事件中,即使MSDN documentation指出:

  

dwThreadId [in]

     

与之对应的线程的标识符   钩子程序是相关的。对于桌面应用,如果是这样   参数为零,钩子过程与所有现有关联   线程在与调用线程相同的桌面上运行。

此外,在SetWindowsHookEx()之后调用GetLastError()返回0,表示没有发生错误。

你知道我做错了吗?

0 个答案:

没有答案