我不知道如何让这件事起作用,或者我遗漏了一些东西--也许在#include?在这一点上,我有:
#RequireAdmin
#include <MsgBoxConstants.au3>
#include <FileConstants.au3>
;vcdredist
Run($sDrivers & "\vcredist_x86.exe")
WinWaitActive("vcredist_x86")
;ControlClick("Microsoft Visual C++ 2010 x86 Redistributable Maintenance", "","[CLASS:Button; INSTANCE:3]")
ControlClick("Microsoft Visual C++ 2010 x86 Redistributable Maintenance", "","[ID:105]")我已经检查过AutoIt v3 WIndow控件,ControlClick中的参数是正确的
最后两行都没有使AutoIt选择所需的选项。任何帮助都非常感谢。
发布于 2016-07-20 19:50:12
可能脚本正在等待窗口变成active WinWaitActive()。
在这种情况下,您可以在WinActivate之前使用WinWaitActive来避免这个问题。
如果您想要一个更健壮的解决方案,可以使用以下方法:
While Not WinActive($win)
WinActivate($win)
Sleep(500)
WEnd发布于 2016-07-08 11:57:08
WinWaitActive()可能不是您正在寻找的东西,因为它等待窗口是活动的,以运行代码。WinActivate()激活窗口。如果您希望在激活窗口时运行代码,那么WinWaitActive()就可以了。
此外,您可以通过这样做来避免在ControlClick中拥有标题。
$hWnd = WinWait("vcredist_x86")
WinWaitActive("vcredist_x86")
ControlClick($hWnd, "", "[CLASS FROM AUTOITINFO]", "Left", 1)如果尚未使用自动窗口信息工具,则使用它查找类。(https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm)
如果ControlClick仍然不能工作,那么您可以尝试使用
MouseClick("Left", x, y)X,Y是坐标。
发布于 2017-10-12 17:20:55
我用AutoIt编写了一个UDF来等待控件。在这里贴了几次。只要喂它你想要的东西和多久,如果适用的话,你想要等待。默认情况下,您可以永远等待。
然而,有一个更容易的解决方案,安装在安静模式。运行命令
Run($sDrivers & '\vcredist_x86.exe /q')
现在你不用戳任何按钮了。另外,最好不要使用ID,因为如果您正在测试一个正在更改的应用程序,开发人员可以更改所有这些。我使用按钮文本作为额外的搜索标准。我的代码更可靠,维护更少。
https://stackoverflow.com/questions/38261218
复制相似问题