钩子并记录Windows消息队列中的“所有”内容

3 投票
3 回答
2716 浏览
提问于 2025-04-15 13:44

有没有人能提供一个能用的代码示例,教我怎么连接到Windows消息队列(也就是post/sendMessage),并记录所有那里的消息?最好是用Python来写。我对这个很感兴趣,因为这样可以更方便地创建测试脚本,模拟用户输入。

3 个回答

1

你可以使用 SetWinEventHook 来捕捉大部分系统窗口活动。这个方法相比传统的钩子有个好处,就是你可以直接在自己的程序里使用,不需要写一个单独的钩子DLL。而且,当调用 SetWinEventHook 的线程结束后,Windows 会自动释放这个处理程序。这样做的好处是,避免了因为钩子出错而导致其他应用程序崩溃的问题,因为如果你使用了注入的DLL,哪怕是个小错误也可能会引发崩溃。

2

其实有一个工具包,它封装了一个叫做 SetWindowsHookEx 的函数,这个工具包叫做 pyHook。我之前用过这个工具包,写了一个简单的键盘记录器(这是我为了监控自己,帮助记录工作时间而做的实验),效果很好。

1

通常,这个操作是通过 SetWindowsHookEx 函数 来完成的。

在 Python 中,你可能需要使用一些第三方库,比如 Python for Windows 扩展。你可能会用到 PyCWnd.HookMessagePyCWnd.HookAllKeyStrokes 这些功能。

撰写回答