如何从 hookproc 函数获取数据 winapi (C++)
How to get data from hookproc function winapi (C++)
我有一个程序可以在另一个 window 上设置挂钩。 我想让这个程序知道我的钩子函数是否收到消息。我该怎么做?
我曾想过将消息从挂钩函数发送到我的主 window,但我不知道如何传递 HWND 处理程序。我也不想使用 EnumWindows
或 FindWindow
来找到我的主要 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
,并且钩子可以读取它。
我有一个程序可以在另一个 window 上设置挂钩。 我想让这个程序知道我的钩子函数是否收到消息。我该怎么做?
我曾想过将消息从挂钩函数发送到我的主 window,但我不知道如何传递 HWND 处理程序。我也不想使用 EnumWindows
或 FindWindow
来找到我的主要 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
,并且钩子可以读取它。