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

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

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

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

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

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

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

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

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