【问题标题】:ControlClick not working with AutoItX3ControlClick 不适用于 AutoItX3
【发布时间】:2014-02-19 19:42:40
【问题描述】:

我目前正在尝试使用 AutoItX3 进行一些自动化操作。

我的脚本打开了一个应用程序,现在我希望它点击应用程序中的某个按钮。这是我的 ControlClick 代码(参数是从 AutoIt v3 窗口信息工具获取的):

Local $sText = WinGetTitle("[ACTIVE]")<br>
ControlClick($sText, "", "[CLASS:WindowsForms10.Window.8.app.0.33c0d9d; INSTANCE:62]",     "left", 1, 21, 12)

不幸的是,这段代码似乎根本没有做任何事情。我将其替换为带有坐标的常规鼠标单击,但是此脚本无法在具有不同分辨率的任何计算机上运行。

有什么想法吗?

【问题讨论】:

  • 尝试使用 consoleWrites 来获取关于什么不起作用的信息。尝试跳过 controlId。只需使用标题和文本,然后使用“”,...您是否将选项设置为使用类?
  • 如何使用 ConsoleWrite 获取错误信息?文档只是表明我必须传入一个数据字符串。另外,如何在不使用 controlID 的情况下让鼠标点击在窗口中的特定位置?

标签: automation autoit


【解决方案1】:

试试这个来理解我的意思。

Example()

Func Example()
    ; Run Notepad
    Run("notepad.exe")

    ; Wait 10 seconds for the Notepad window to appear.
    WinWaitActive("[CLASS:Notepad]", "", 10)
    ControlSetText("[CLASS:Notepad]", "", '', 'HELLO WORLD!')
    ; Wait for 2 seconds to display the Notepad window.
    Sleep(2000)
    ControlSend("[CLASS:Notepad]", "", '', '{Right 20}{ENTER}NEW LINE!')
    ; Close the Notepad window using the classname of Notepad.
    WinClose("[CLASS:Notepad]")
    WinWaitActive("Editor", "", 10)
    ControlSend("Editor", "", '', '!n')
EndFunc   ;==>Example

【讨论】:

  • 我不确定这段代码有什么帮助。它完全按照它应该做的(除了最后两个动作没有运行,因为那时记事本窗口已经关闭),但并没有真正帮助我的情况。
【解决方案2】:

您确定 AutoIt 间谍工具单独识别按钮吗?有时 AutoIt 信息工具将应用程序的某些部分(多个按钮或多个选项卡)识别为单个对象。在这种情况下,您必须使用鼠标单击操作,然后使用如下控制点击功能

mouseclick("",21,21)
Controlclick("","","button1",21,21)

这可能会对您有所帮助。确保从 autoIt 信息工具的鼠标选项卡中捕获 x 和 y 坐标。

【讨论】:

    【解决方案3】:

    有时它可能会发生在一些受反机器人/宏系统保护的窗口上,例如游戏、java 客户端等...

    您可以使用带有第三方桌面控制器(例如 teamviewer/RDP/)的 VM 绕过此问题...您将能够通过 RDP 会话运行您的脚本。

    请注意:AutoIt 不是用来制作 GameBots :)

    Vlu。

    【讨论】:

      猜你喜欢
      • 2014-03-21
      • 2016-11-10
      • 1970-01-01
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多