3

我对 SetWindowsHookEx 和 WH_CALLWNDPROC 有一个大问题!当使用 SetWindowsHookEx 进行本地挂钩时

HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, GetModuleHandle(NULL), GetCurrentThreadId());

一切正常,但是当我尝试为其他程序设置全局挂钩或挂钩时:

HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, GetModuleHandle(NULL), threadId);

在哪里threadId = GetWindowThreadProcessId(window, NULL);
HWND window = ::FindWindow(NULL,"Program title");

我在钩子中得到 NULL ......

我读了很多关于钩子的书,但是,我不明白磨损在哪里......我有几天头疼。提前谢谢你,对不起我的英语。

4

1 回答 1

2

一种方法:

  1. 将您的 CallWndProc 函数放入 DLL 中
  2. 使用具有以下内容的 def 文件导出该函数:

图书馆

EXPORTS

    CallWndProc
  1. 完毕!
  2. (尝试在 Win32 API 失败时始终使用 GetLastError,并在您提出问题时给出结果)
于 2013-11-06T16:22:50.627 回答