请教如何截获其他程序某一按钮的click事件,并执行自己的程序?(100分)

W

way2

Unregistered / Unconfirmed
GUEST, unregistred user!
请教如何截获其他程序某一按钮的click事件,并执行自己的程序?
 
用hook技术。
 
如果你能取得那个按钮的句柄的话,用SetWindowLong可以吧
 
有趣,我来听。
 
SetWindowLong必须是同进程的^_^
 
得到句柄当然很容易,<br>我感觉用hook应该可以实现,但具体实现方法,希望高手指教。
 
啊,这个问题是典型的窗口子类化的问题。<br><br>首先,得到目标窗口的句柄(按钮也是窗口)<br>然后,用SetWindowLong将自己写的消息处理函数挂到这个窗口上,注意在自己的消息处理函数中要记得调用原来的消息处理函数。<br>最后,退出的时候,恢复原来窗口的消息处理函数。<br><br>目前很流行的取*****密码的处理程序就是这样做的,你只需要处理WM_LMOUSEDOWN消息就可以了啊
 
可否,把代码给出来,谢谢!
 
WM_LMOUSEDOWN
 
在自己的程序中管事,但句柄换成其他程序按钮的句柄就不行了。
 
Hook,判断光标位置,提取按钮内容,判断是不是这个按钮,如果是就执行你的程序!
 
谢谢,微程指教,能给段具体代码吗?因为我对hook不是很熟悉。
 
我最近很忙,你在网上随便下一本书,书上都有hook看看吧,不好意思呀,如果你有写不出来,或者什么地方报错,你可以写信与我联系<br>microprogramer@hotmail.com
 
首先是要得到它的 Handle ,用 GetWindowLong 取到它的 WndProc ,保存备用,然后用<br>SetWindowLong 将自己写的 WndProc 替换掉它的 WndProc,在自己的 WndProc 结束时,<br>调用原来的 WndProc ,并按自己的要求给它相应的 Msg。<br>&nbsp;
 
上面的方法对其它进程应该不适用?<br>用系统级的鼠标 Hook ,根据要捕捉按钮的特点判断是否点击了该按钮。
 
参考我的程序吧:<br>http://www.2ccc.com/softview.php?type=f&amp;softid=174&amp;PHPSESSID=d604ecd00c398edc095cf634b28ae1b8
 
HWND wnd = 按钮所在窗口的句柄;<br>WNDPROC oldProc = SetWindowLong(wnd, GWL_WNDPROC, yourProc);<br>...<br>用完后恢复 GWL_WNDPROC。<br><br>WNDPROC yourProc(...)<br>{<br>&nbsp; &nbsp; if (那个按钮被按下) then 想干什么就干什么<br>&nbsp; &nbsp; else CallWndProc(oldProc);<br>&nbsp; &nbsp; ...<br>}<br><br>摘抄而来
 
顶部