• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zjsxwc
V2EX  ›  程序员

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

  •  
  •   zjsxwc ·
    zjsxwc · Jan 5, 2022 · 1986 views
    This topic created in 1770 days ago, the information mentioned may be changed or developed.

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

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

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

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

    ns1
    ns1
    Jan 5, 2022❤️1
    1
    可以用 spy++先监听窗体消息,按钮按下应该会触发类似 BN_CLICKED 、WM_LBUTTONDOWN 的消息,消息的 wParam 或者 lParam 应该会携带有按钮标识 ID ,找到特定 ID 即可对应于相应按下的按钮。
    确定要监听的消息后可以通过远线程注入 DLL 调用 SetWindowsHookEx 使用 WH_CBT 勾子监听。

    很长时间没写 Win32 了,有些概念也模糊了~
    ysc3839
    ysc3839
    Jan 5, 2022
    2
    @ns1 你说的基本是对的,但 WH_CBT 应该是 WH_CALLWNDPROC 。另外既然注入 DLL 到目标进程了,也可以考虑用 SetWindowSubclass 直接修改对应窗口的处理函数。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1132 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
    ♥ Do have faith in what you're doing.