AutoIt - ControlClick 不起作用
AutoIt - ControlClick does not work
我不知道如何让它工作或者我遗漏了一些东西 - 也许在 #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 检查过 WIndowControlClick 中的控件和参数是正确的
最后两行的 none 使 AutoIt select 成为所需的选项。
非常感谢任何帮助。
WinWaitActive()
可能不是您要找的东西,因为它等待 window 激活,代码为 运行。 WinActivate() 激活 window。
如果您希望在激活 window 时代码为 运行,那么 WinWaitActive() 就可以了。
您还可以通过这样做避免在 ControlClick 中出现标题。
$hWnd = WinWait("vcredist_x86")
WinWaitActive("vcredist_x86")
ControlClick($hWnd, "", "[CLASS FROM AUTOITINFO]", "Left", 1)
使用 Autoit Window 信息工具查找 类(如果您尚未使用它)。
(https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm)
如果ControlClick还是不行,那你可以试试
MouseClick("Left", x, y)
X,Y为坐标。
可能脚本正在等待 window 激活 WinWaitActive()。
在这种情况下,您可以在 WinWaitActive 之前使用 WinActivate 来避免此问题。
如果你想要一个更强大的解决方案,你可以使用这个:
While Not WinActive($win)
WinActivate($win)
Sleep(500)
WEnd
我在AutoIt中写了一个UDF来等待控件。在这里张贴了几次。只要给它喂你想要的东西和多长时间,如果适用的话你想等。你可以默认永远等待。
但是,有一个更简单的解决方案,以安静模式安装它。 运行一个命令
运行($sDrivers & '\vcredist_x86.exe /q')
现在您无需按下任何按钮。此外,最好不要使用 ID,因为如果您正在测试正在更改的应用程序,开发人员可以更改所有这些。我改为使用按钮文本作为附加搜索条件。我的代码更可靠,维护更少。
一个应用程序在尝试自动化时经历过类似的情况,在尝试所有调试后添加了下面的命令并且它工作得很好
#RequireAdmin
我不知道如何让它工作或者我遗漏了一些东西 - 也许在 #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 检查过 WIndowControlClick 中的控件和参数是正确的
最后两行的none 使 AutoIt select 成为所需的选项。 非常感谢任何帮助。
WinWaitActive()
可能不是您要找的东西,因为它等待 window 激活,代码为 运行。 WinActivate() 激活 window。 如果您希望在激活 window 时代码为 运行,那么 WinWaitActive() 就可以了。
您还可以通过这样做避免在 ControlClick 中出现标题。
$hWnd = WinWait("vcredist_x86")
WinWaitActive("vcredist_x86")
ControlClick($hWnd, "", "[CLASS FROM AUTOITINFO]", "Left", 1)
使用 Autoit Window 信息工具查找 类(如果您尚未使用它)。 (https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm)
如果ControlClick还是不行,那你可以试试
MouseClick("Left", x, y)
X,Y为坐标。
可能脚本正在等待 window 激活 WinWaitActive()。
在这种情况下,您可以在 WinWaitActive 之前使用 WinActivate 来避免此问题。
如果你想要一个更强大的解决方案,你可以使用这个:
While Not WinActive($win)
WinActivate($win)
Sleep(500)
WEnd
我在AutoIt中写了一个UDF来等待控件。在这里张贴了几次。只要给它喂你想要的东西和多长时间,如果适用的话你想等。你可以默认永远等待。
但是,有一个更简单的解决方案,以安静模式安装它。 运行一个命令
运行($sDrivers & '\vcredist_x86.exe /q')
现在您无需按下任何按钮。此外,最好不要使用 ID,因为如果您正在测试正在更改的应用程序,开发人员可以更改所有这些。我改为使用按钮文本作为附加搜索条件。我的代码更可靠,维护更少。
一个应用程序在尝试自动化时经历过类似的情况,在尝试所有调试后添加了下面的命令并且它工作得很好
#RequireAdmin