怎样用 sendmessage发送消息控制另一个程序的按钮? (50分)

  • 主题发起人 主题发起人 zhaozhe
  • 开始时间 开始时间
Z

zhaozhe

Unregistered / Unconfirmed
GUEST, unregistred user!
1用findwindow找到应用程序的句丙,如何找到指定控件的handle?<br>2找到后sendmessage的参数怎么写(比如一个button的单击事件)?
 
1.应该直接找指定控件的handle<br><br>2.sendmessage(buttonhandle, WM_LBUTTONDOWN, 0, 0)<br>&nbsp; sendmessage(buttonhandle, WM_LBUTTONUP, 0, 0)
 
1.<br>function EnumChildProc(AHWnd: HWnd; lp:lParam):boolean; stdcall;<br>//回调过程,枚举子窗口<br>begin<br>&nbsp; //这里的AHwnd就是子窗口的句柄,下面递归回调<br>&nbsp; EnumChildWindows(AHWnd,@EnumChildProc,1);<br>&nbsp; Result := True;<br>end;<br><br>&nbsp; h := FindWindow(nil,'C:/');<br>&nbsp; EnumChildWindows(h,@EnumChildProc,0);<br><br>2.<br>&nbsp; SendMessage(Handle,BM_CLICK,0,0); //目标必须为Button
 
还是有点不明白,怎样找到找指定控件的handle呢?<br>
 
EnumChildWindows(AHWnd,@EnumChildProc,1);//这句校验语法错了
 
上面的代码是我下面工具中的源码,不会错的<br><br>如果仅是查找某一个子控件,可以用FindWindowEx,参考WIN32API<br>它可以根据顺序查找,只要程序没改变,其控件的顺序是不变的,<br>可以用SPY++查找类名以区分类别,另外下面这个工具有比SPY++方便的功能<br>http://hbcrc.onlinedown.net/down/WindowView.zip<br>熟练使用FindWindow,FindWindowEx,EnumChildWindows,SendMessage,PostMessage<br>这几个API,就能很好的控制外部应用程序了<br>最难的是WINDOWS的消息,实在是太多了,慢慢啃吧....
 
谢谢轻舞肥羊啦,我的问题解决啦,你是我的偶像啊。<br>非常感谢!可不可以留个QQ啊?
 
后退
顶部