gpt4 book ai didi

c++ - 如何为 WH_CALLWNDPROCRET 设置全局钩子(Hook)?

转载 作者:太空狗 更新时间:2023-10-29 23:09:59 27 4
gpt4 key购买 nike

我想设置全局 Hook 来跟踪哪个应用程序处于事件状态。

在我的主程序中,我正在执行以下操作:

HMODULE mod=::GetModuleHandle(L"HookProcDll");
HHOOK rslt=(WH_CALLWNDPROCRET,MyCallWndRetProc,mod,0);

名为 MyCallWndRetProc 的 Hook 程序存在于名为 HookProcDll.dll 的单独 dll 中。 Hook 程序正在监视 WM_ACTIVATE 消息。

问题是代码停留在我设置 Hook 的行中,即在我调用 ::SetWindowsHookEx 的行中。然后 Windows 变得没有响应,我的任务栏消失了,我的桌面是空的。然后我必须重置计算机。

我做错了什么,为什么 Windows 没有响应?和我是否需要在每个进程中注入(inject) HookProcDll.dll 以设置全局 Hook ,我该怎么做?

最佳答案

这几乎肯定听起来像是 MyCallWndRetProc 中的崩溃错误。您指定 Hook DLL 以在每个带有窗口的进程中加载​​,并且在窗口消息后调用 MyCallWndRetProc 时它会崩溃。由于在每个进程中的每个窗口消息之后都会调用它,因此它最终会取消在用户 session 中显示 UI 的每个进程。您甚至无法启动新的应用程序,因为您的 hook proc 将立即加载到它们中。

包括 MyCallWndRetProc 的代码,也许还有您的 DllMain,应该可以让我们了解正在发生的事情。

关于c++ - 如何为 WH_CALLWNDPROCRET 设置全局钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925436/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com