我想设置跟踪哪个应用程序处于活动状态的全局钩子。如何为WH_CALLWNDPROCRET设置全局钩子?
在我的主程序我做foloowing:
HMODULE mod=::GetModuleHandle(L"HookProcDll");
HHOOK rslt=(WH_CALLWNDPROCRET,MyCallWndRetProc,mod,0);
被称为MyCallWndRetProc
存在于所谓的HookProcDll.dll单独的DLL的钩子程序。挂钩程序正在观察WM_ACTIVATE
消息。
问题是,代码在我设置挂钩的行中出现问题,即在我拨打电话::SetWindowsHookEx
的行中。然后Windows得到反应迟钝,我的任务栏消失,我留下了空的桌面。然后我必须重置电脑。
错在哪里,为什么Windows得不到响应?和 我是否需要在每个进程中注入HookProcDll.dll以设置全局钩子,我该怎么做?
我想你在第二行缺少一个函数名称。而且你没有发布最重要的代码:'SetWindowsHookEx'调用和你的钩子程序。 – interjay 2010-05-27 22:32:15
我假设HHOOK rslt =(..)应该是HHOOK rslt = SetWindowsHookEx(...); – Michael 2010-05-27 22:38:09
您已经在每个进程中注入DLL。这是问题所在,你会崩溃每个GUI应用程序,包括Windows资源管理器。将其注入到自己的第一个中,以便调试它。 – 2010-05-27 22:51:53