如何监控另一个程序中的某个按钮被点击?

FortheC 2008-09-10 02:59:32
如,A程序有N个按钮,我想用B程序来监控A程序的某个按钮(如 按钮1),只要A程序中的 按钮1 被点击,B程序就马上可以收到消息;
(注:肯定是没有A程序的源码)

请给出思路与大概的过程,感谢了!如果有部分或完整例子代码贴上,就最好了。
...全文
652 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
blueink_200451 2008-09-14
  • 打赏
  • 举报
回复
消息中还有窗口的句柄信息,这样可以得到id,比如idc_button1,2等,当然你在别人的进程 中是看到这些宏的是一些数字,你可以用spy++查看,记住ID,然后在消息处理中就可以知道是哪个button了。
303afei 2008-09-11
  • 打赏
  • 举报
回复
注入模块后,子类化按钮的父窗体,截wm_command消息,测试出对应的id
VsirSoft 2008-09-10
  • 打赏
  • 举报
回复
一般这类的 还是HOOK吧
cnzdgs 2008-09-10
  • 打赏
  • 举报
回复
SetWindowsHookEx,idHook给WH_CALLWNDPROC,在Hook函数中处理WM_COMMAND消息,判断窗口句柄、控件ID,再通知B程序。
yjgx007 2008-09-10
  • 打赏
  • 举报
回复
SetWindowsHookEx
knightshenbin 2008-09-10
  • 打赏
  • 举报
回复
如果A是自己做的就好办了,发个消息通知一下,如果不是,那就Hook吧
良枫 2008-09-10
  • 打赏
  • 举报
回复
当A中的按钮按下时,用SendMessage发送WM_COPYDATA消息给B,B收到消息根据收到的值判断哪个按钮被按下。
chenyijiu 2008-09-10
  • 打赏
  • 举报
回复
hook message
rand0941 2008-09-10
  • 打赏
  • 举报
回复
同意2楼,hook
Torch009 2008-09-10
  • 打赏
  • 举报
回复
A程序如果是你写的话就好办了。你点按钮时可以向B程序发送消息。
UDX协议 2008-09-10
  • 打赏
  • 举报
回复
楼上,你测试过没有?
GetDlgCtrlID。程序每次执行句柄值都是不同的,但ID肯定是相同的。
UDX协议 2008-09-10
  • 打赏
  • 举报
回复
vista就不用考虑了。

其他系统可以通过注入方式,或hook方式把自己的dll注入到a进程 ,在你的dll中枚举你需要的窗口,重新定义消息入口就可以处理了。
cnzdgs 2008-09-10
  • 打赏
  • 举报
回复
GetDlgCtrlID。但程序每次执行句柄值都是不同的,通常根据ID来识别控件。
FortheC 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wwwllg 的回复:]
消息中还有窗口的句柄信息,这样可以得到id,比如idc_button1,2等,当然你在别人的进程 中是看到这些宏的是一些数字,你可以用spy++查看,记住ID,然后在消息处理中就可以知道是哪个button了。
[/Quote]

这个消息中的窗口的句柄, 是不是就是某些控件的句柄? 哪个函数可以根据此句柄来获得ID呢? 谢谢!
cnzdgs 2008-09-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wwwllg 的回复:]
消息中还有窗口的句柄信息,这样可以得到id,比如idc_button1,2等,当然你在别人的进程 中是看到这些宏的是一些数字,你可以用spy++查看,记住ID,然后在消息处理中就可以知道是哪个button了。
[/Quote]
蒋晟 2008-09-10
  • 打赏
  • 举报
回复
在父窗口中捕获WM_COMMAND或者BN_CLICK。Vista中的UAC如果打开了的话,跨进程的窗口访问可能被禁止,需要修改两个程序的代码才可以允许互相访问。

你有可能需要为A程序的每一个版本写一套代码。举例来说,如果A程序是Windows里面的音量控制,那么你有可能需要为每个语言的每个操作系统版本的程序编写不同的代码。
UDX协议 2008-09-10
  • 打赏
  • 举报
回复
消息中还有窗口的句柄信息,这样可以得到id,比如idc_button1,2等,当然你在别人的进程 中是看到这些宏的是一些数字,你可以用spy++查看,记住ID,然后在消息处理中就可以知道是哪个button了。
FortheC 2008-09-10
  • 打赏
  • 举报
回复
我对消息这东西真的不甚了解, 难道当消息来到之时, 可以根据这个消息来判断此消息是来自哪个控件ID的?
FortheC 2008-09-10
  • 打赏
  • 举报
回复
我还是那个问题, 如果Hool消息, 有N个按钮, 按钮1被点击时发出BN_CLICKED消息, 按钮2被点击时也是发出BN_CLICKED消息, 按钮3也是,按钮4也是..... 如果Hook BN_CLICKED消息, 当消息来到时, 怎么知道是哪个按钮?
scq2099yt 2008-09-10
  • 打赏
  • 举报
回复
同意Hook
加载更多回复(1)

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧