Automation 如果背景或前面有窗口,请使用AutoIt单击控件
我想单击EXE文件表单上的按钮 下面是我尝试过的代码Automation 如果背景或前面有窗口,请使用AutoIt单击控件,automation,autoit,Automation,Autoit,我想单击EXE文件表单上的按钮 下面是我尝试过的代码 WinWaitActive("ABCD") ControlClick("ABCD","Defer","[CLASS:Button; INSTANCE:2]") Run("ClickDefer.exe") 第一行,WinWaitActive(“ABCD”)等待一个名为ABCD的窗口进入焦点 第二行单击按钮,Defer 第三行运行相同的EXE文件来处理相同的场景(如果发生) 如果ABCD窗口对焦,则此功能正常工作。如果没有聚焦,它就不起作用
WinWaitActive("ABCD")
ControlClick("ABCD","Defer","[CLASS:Button; INSTANCE:2]")
Run("ClickDefer.exe")
- 第一行,
等待一个名为ABCD的窗口进入焦点WinWaitActive(“ABCD”)
- 第二行单击按钮,Defer
- 第三行运行相同的EXE文件来处理相同的场景(如果发生)
如果ABCD窗口对焦,则此功能正常工作。如果没有聚焦,它就不起作用。如何克服此问题?使用
WinActivate
可以使窗口聚焦
WinActivate(“ABCD”)
这将把焦点移到“ABCD”窗口
那么,您应该使用无限循环,而不是反复运行同一个编译脚本。JonBecher是对的,但是错过了窗口永远不会激活的情况。因此,您的解决方案是:
While True
$win = WinWait("ABCD", "Defer")
ControlClick($win, "", "[CLASS:Button; INSTANCE:2]")
WinWaitClose($win)
Wend
这意味着您的单击将关闭窗口,并且您希望等待同一窗口在将来的某个时候再次出现。否则,您完整的意图运行(…)
-调用就没有意义了
使用
ControlClick(…)
您不需要让窗口处于活动状态甚至可见状态。如果发送控制键,则无需等待或关注该窗口。它会处理。。。我正在为Skype sso编写此代码,无论窗口在哪里。。。如果窗口最小化,它就会工作
#include <WinAPI.au3>
$pId = Run("C:/Program Files (x86)/Skype/Phone/Skype.exe")
Local $hWnd = WinWait("[CLASS:TLoginForm]", "", 10)
sleep(8000)
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server]", "Passw0rd")
sleep(1000)
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server]", "{TAB}")
sleep(1000)
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server]", "{Enter}")
#包括
$pId=Run(“C:/ProgramFiles(x86)/Skype/Phone/Skype.exe”)
本地$hWnd=WinWait(“[CLASS:tloginfo]”,“”,10)
睡眠(8000)
ControlSend($hWnd,“,[类别:Internet Explorer\u服务器],“Passw0rd”)
睡眠(1000)
ControlSend($hWnd,“,”[CLASS:InternetExplorer_Server],“{TAB}”)
睡眠(1000)
ControlSend($hWnd,“,”[CLASS:InternetExplorer_Server],“{Enter}”)
#include <WinAPI.au3>
$pId = Run("C:/Program Files (x86)/Skype/Phone/Skype.exe")
Local $hWnd = WinWait("[CLASS:TLoginForm]", "", 10)
sleep(8000)
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server]", "Passw0rd")
sleep(1000)
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server]", "{TAB}")
sleep(1000)
ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server]", "{Enter}")