如何从 hookproc 函数获取数据 winapi (C++)

How to get data from hookproc function winapi (C++)

我有一个程序可以在另一个 window 上设置挂钩。 我想让这个程序知道我的钩子函数是否收到消息。我该怎么做?

我曾想过将消息从挂钩函数发送到我的主 window,但我不知道如何传递 HWND 处理程序。我也不想使用 EnumWindowsFindWindow 来找到我的主要 window.

最简单的解决方案是将目标 HWND 存储在主程序和挂钩都可以访问的共享内存中。

如果你的编译器支持#pragma data_seg() (ie, MSVC), you can use that to declare an HWND variable in a shared code section in a DLL. Have your main program and your hook use the same DLL. See Process shared variable #pragma data_seg usage.

否则,您可以使用CreateFileMapping()+MapViewOfFile() to allocate a block of memory at runtime, and then store/read the HWND value from it. See Creating Named Shared Memory

无论哪种方式,主程序都可以分配共享hwnd,并且钩子可以读取它。