关于利用句柄的简单问题! ( 积分: 50 )

  • 主题发起人 主题发起人 yaoweifeng
  • 开始时间 开始时间
Y

yaoweifeng

Unregistered / Unconfirmed
GUEST, unregistred user!
spy++中显示<br>dialog(主程序)<br> &nbsp;dialog(a)<br> &nbsp; &nbsp; &nbsp;button1<br> &nbsp; &nbsp; &nbsp;button2<br> &nbsp;diloag(b)<br> &nbsp; &nbsp; &nbsp;static<br> &nbsp; &nbsp; &nbsp;button1<br>主窗口中还有两个(多个)dialog,并且这些dialog都没有caption,用findwindow不知道怎么查找。我现在想找到dialog(a)中的button2的句柄,并且执行他的click事件,怎么做?谢谢!
 
spy++中显示<br>dialog(主程序)<br> &nbsp;dialog(a)<br> &nbsp; &nbsp; &nbsp;button1<br> &nbsp; &nbsp; &nbsp;button2<br> &nbsp;diloag(b)<br> &nbsp; &nbsp; &nbsp;static<br> &nbsp; &nbsp; &nbsp;button1<br>主窗口中还有两个(多个)dialog,并且这些dialog都没有caption,用findwindow不知道怎么查找。我现在想找到dialog(a)中的button2的句柄,并且执行他的click事件,怎么做?谢谢!
 
怎么没有人来啊?顶都不顶一下:(我自己顶!
 
枚举子窗体, 然后工根据某些&quot;特征&quot;(比如是否有某个子窗体, 以及子窗体是否具有某些&quot;特征&quot;)来判断,,
 
在DELPHI中您可以用GetCursorPos获得光标的位置,然后用WindowFromPoint返回当前光标所在位置的句柄,这样当您把光标移动到您想控制的组件的时候,就可以知道它的句柄了.<br>具体的做法如下:<br>假如您已经在TFORM1上放置了一个TEDIT,一个TTIMER(把TTIMER的Interval的属性改为100)<br>procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br> &nbsp;Pos: TPoint;<br> &nbsp;Handle: HWND;<br>begin<br> &nbsp;GetCursorPos(Pos); // 得到当前光标位置<br> &nbsp;Handle := WindowFromPoint(Pos); // 返回当前位置的句柄<br> &nbsp;Edit1.Caption := IntToStr(Handle);<br>end;<br>看您的问题是要CLICK的,那么这很好办了,发送一个SENDMESSAGE就可以了<br>假如您用上面的代码查找到了您希望CLICK的DIALOG的句柄为178056(我只是说假如);<br>然后,SendMessage(178056,WM_KEYDOWN,VK_RETURN ,1)<br>OK,您的问题解决了.
 
谢谢!问题解决!
 
接受答案了.
 
后退
顶部