AutoIt - ControlClick不起作用

时间:2016-07-08 07:33:02

标签: autoit

我不知道如何使这个工作或我遗失了一些东西 - 也许在#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 Control进行了检查,并且ControlClick内的参数是正确的

最后两行都没有使AutoIt选择所需的选项。 非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

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是坐标。

答案 1 :(得分:0)

可能脚本正在等待窗口变为活动WinWaitActive()。

在这种情况下,您可以在WinWaitActive之前使用WinActivate来避免此问题。

如果您想要更强大的解决方案,可以使用:

While Not WinActive($win)
    WinActivate($win)
    Sleep(500)
WEnd

答案 2 :(得分:0)

我在AutoIt中写了一个UDF来等待控件。在这里张贴了好几次。只需要你想要的东西,如果适用,你想要等多久。你可以默认等待。

但是,有一个更简单的解决方案,安装在安静模式。运行命令

运行($ sDrivers&amp;'\ vcredist_x86.exe / q')

现在你不必戳任何按钮。此外,最好不要使用ID,因为如果您正在测试正在更改的应用程序,开发人员可以更改所有这些。我使用按钮文本作为额外的搜索条件。我的代码更可靠,维护更少。

答案 3 :(得分:-1)

在尝试所有应用程序的调试之后,经历了针对一个应用程序的类似情况,在尝试了所有调试之后,仅添加了以下命令,它的工作原理就类似于

#RequireAdmin