首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoIt - ControlClick不工作

AutoIt - ControlClick不工作
EN

Stack Overflow用户
提问于 2016-07-08 07:33:02
回答 4查看 8.9K关注 0票数 3

我不知道如何让这件事起作用,或者我遗漏了一些东西--也许在#include?在这一点上,我有:

代码语言:javascript
复制
#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选择所需的选项。任何帮助都非常感谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-20 19:50:12

可能脚本正在等待窗口变成active WinWaitActive()。

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

如果您想要一个更健壮的解决方案,可以使用以下方法:

代码语言:javascript
复制
While Not WinActive($win)
    WinActivate($win)
    Sleep(500)
WEnd
票数 0
EN

Stack Overflow用户

发布于 2016-07-08 11:57:08

代码语言:javascript
复制
WinWaitActive()

可能不是您正在寻找的东西,因为它等待窗口是活动的,以运行代码。WinActivate()激活窗口。如果您希望在激活窗口时运行代码,那么WinWaitActive()就可以了。

此外,您可以通过这样做来避免在ControlClick中拥有标题。

代码语言:javascript
复制
$hWnd = WinWait("vcredist_x86")
WinWaitActive("vcredist_x86")
ControlClick($hWnd, "", "[CLASS FROM AUTOITINFO]", "Left", 1)

如果尚未使用自动窗口信息工具,则使用它查找类。(https://www.autoitscript.com/autoit3/docs/intro/au3spy.htm)

如果ControlClick仍然不能工作,那么您可以尝试使用

代码语言:javascript
复制
MouseClick("Left", x, y)

X,Y是坐标。

票数 1
EN

Stack Overflow用户

发布于 2017-10-12 17:20:55

我用AutoIt编写了一个UDF来等待控件。在这里贴了几次。只要喂它你想要的东西和多久,如果适用的话,你想要等待。默认情况下,您可以永远等待。

然而,有一个更容易的解决方案,安装在安静模式。运行命令

Run($sDrivers & '\vcredist_x86.exe /q')

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38261218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档