如何监听一个老 win32 程序事件?

2022-01-05 16:00:24 +08:00
 zjsxwc

有一个老的还在用的 win32 二进制程序,

而这个 win32 程序由于使用了十多年了,开发公司已经倒闭,

但是呢现在想要监听这个 win32 程序某个按钮按下的事件,作出相应的处理(发送邮件通知客户等),

彦祖们,应该用什么方式可以实现这个需求?

750 次点击
所在节点    程序员
2 条回复
ns1
2022-01-05 16:26:48 +08:00
可以用 spy++先监听窗体消息,按钮按下应该会触发类似 BN_CLICKED 、WM_LBUTTONDOWN 的消息,消息的 wParam 或者 lParam 应该会携带有按钮标识 ID ,找到特定 ID 即可对应于相应按下的按钮。
确定要监听的消息后可以通过远线程注入 DLL 调用 SetWindowsHookEx 使用 WH_CBT 勾子监听。

很长时间没写 Win32 了,有些概念也模糊了~
ysc3839
2022-01-05 17:15:09 +08:00
@ns1 你说的基本是对的,但 WH_CBT 应该是 WH_CALLWNDPROC 。另外既然注入 DLL 到目标进程了,也可以考虑用 SetWindowSubclass 直接修改对应窗口的处理函数。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/826380

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX