枚举当前所有窗口,并模拟按键,找到窗口中的汉字作为判断条件 ( 积分: 50 )

  • 主题发起人 主题发起人 安情
  • 开始时间 开始时间

安情

Unregistered / Unconfirmed
GUEST, unregistred user!
unit&nbsp;Unit1;<br><br>interface<br><br>uses<br>&nbsp;&nbsp;Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,<br>&nbsp;&nbsp;Dialogs,&nbsp;StdCtrls;<br><br>type<br>&nbsp;&nbsp;TForm1&nbsp;=&nbsp;class(TForm)<br>&nbsp;&nbsp;&nbsp;&nbsp;Button1:&nbsp;TButton;<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Button1Click(Sender:&nbsp;TObject);<br>&nbsp;&nbsp;private<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Private&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Public&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;end;<br><br>var<br>&nbsp;&nbsp;Form1:&nbsp;TForm1;<br><br>implementation<br><br>{$R&nbsp;*.dfm}<br>&nbsp;&nbsp;function&nbsp;&nbsp;&nbsp;GetButtonHandle(hwnd:&nbsp;&nbsp;&nbsp;Integer;&nbsp;&nbsp;&nbsp;lparam:&nbsp;&nbsp;&nbsp;Longint):Boolean;&nbsp;&nbsp;&nbsp;stdcall;<br>var<br>&nbsp;&nbsp;buffer:&nbsp;&nbsp;&nbsp;array[0..255]&nbsp;&nbsp;&nbsp;of&nbsp;&nbsp;&nbsp;Char;<br>&nbsp;&nbsp;buffer1:&nbsp;&nbsp;&nbsp;array[0..255]&nbsp;&nbsp;&nbsp;of&nbsp;&nbsp;&nbsp;Char;<br>begin<br>&nbsp;&nbsp;Result&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;True;<br>&nbsp;&nbsp;//PInteger(lparam)^&nbsp;&nbsp;&nbsp;:=&nbsp;0;<br>&nbsp;&nbsp;//showmessage(inttostr(lparam));&nbsp;//<br>&nbsp;&nbsp;GetClassName(hwnd,buffer,256);<br>&nbsp;&nbsp;//ShowMessage(StrPas(Buffer));<br>&nbsp;&nbsp;if&nbsp;strpas(Buffer)='Button'&nbsp;then&nbsp;&nbsp;//<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;GetWindowText(hwnd,buffer1,100);<br>&nbsp;&nbsp;&nbsp;&nbsp;//ShowMessage(StrPas(buffer1));<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;strpas(buffer1)&nbsp;=&nbsp;'分析'&nbsp;then&nbsp;//<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PInteger(lparam)^&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;hwnd;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result:=False;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;<br>end;//end&nbsp;&nbsp;&nbsp;of&nbsp;&nbsp;&nbsp;function<br><br><br><br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br><br>&nbsp;var<br>&nbsp;&nbsp;ButtonHandle,WindowHandle:HWND;<br>begin<br>&nbsp;&nbsp;//以下代码是为了得到“确定”按钮的句柄<br>&nbsp;&nbsp;WindowHandle:=FindWindow(nil,'计算机管理');&nbsp;//<br>&nbsp;&nbsp;if&nbsp;WindowHandle&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;EnumChildWindows(WindowHandle,@GetButtonHandle,Integer(@WindowHandle));<br>&nbsp;&nbsp;&nbsp;&nbsp;ButtonHandle&nbsp;&nbsp;&nbsp;:=&nbsp;&nbsp;&nbsp;WindowHandle;<br>&nbsp;&nbsp;&nbsp;&nbsp;//以下代码是为了模拟单击“确定”按钮<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;&nbsp;&nbsp;ButtonHandle&nbsp;&lt;&gt;&nbsp;0&nbsp;&nbsp;&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;showmessage(inttostr(WindowHandle));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PostMessage(ButtonHandle,&nbsp;BM_Click,&nbsp;0,&nbsp;0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SendMessage(ButtonHandle,MOUSEEVENTF_LEFTDOWN,0,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SendMessage(ButtonHandle,MOUSEEVENTF_LEFTUP,0,0);<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;&nbsp;<br>end;<br><br><br>end.<br><br>必须要手动点一下磁盘碎片整理程序,才能模拟点击分析按钮,我想自动完成,就是当打开计算机管理时,自动点击分析按钮,有谁可以帮我一下?<br>如果可以自动,我就可以把按钮事件改成时间控件了!<br>另外,我想实现,通过inputbox来输入指定汉字,然后通过枚举窗口查找哪些汉字。比如,当用迅雷下载的时候,当出现“下载完成100%”的时候,然后做一些事情,比如关机?
 
自己顶一下
 
如果你的“确定”按钮下面有panel之类的容器的话,要先找到容器的handle
 
我&nbsp;是新手,能具体给出代码吗?
 
有人浏览,没有人出代码吗?<br>在等吧!
 
我是新手,没有太多分<br>这个是我学习的例子而已,希望高手帮助!
 
怎么没有人帮忙呢?
 
自己顶起来
 
对节点的操作,难道没有人会吗?
 
根据你的方法一样,再执行一次就解决问题了。
 
我是新手,麻烦,你给我相关的代码
 
这段代码,已经弄五天了,没成,你知道,五天一个人的脑袋,已经大的不能再大了<br>我的qq是:44665376,整天在线<br>如果哪位朋友,能解决上面的两个问题的其中一个,请加我
 
我等到花儿也谢谢谢了
 
我自己顶
 
刘麻子在吗?<br>加我qq
 
后退
顶部