无法找到控制权

时间:2017-11-13 12:52:26

标签: autoit

我想找到并使用自动点击一个按钮。我尝试了AutoIt窗口信息工具,但无法识别该按钮,因此ControlClick()失败。

该按钮在当前窗口中处于活动状态,但Send("Enter")不起作用。使用MouseClick()尝试但每次都没有出现在同一个地方的窗口,我尝试了这个脚本:

$hWnd = WinWait("vcredist_x86")
WinWaitActive("vcredist_x86")
ControlClick($hWnd, "", "[CLASS FROM AUTOITINFO]", "Left", 1)

但它们都不起作用。有没有其他方法可以识别并点击按钮?

2 个答案:

答案 0 :(得分:0)

如果AutoItWindowInfo(32和64位)的版本都没有""请参阅"您需要自动执行的控件,您可以执行以下操作:

方法1 - 发送击键:

  1. 使用WindowActivate
  2. 激活窗口
  3. 发送一些TAB,直到控件聚焦(如果不是最初的)
  4. Send ENTER或SPACE
  5. 方法2 - MouseClick

    1. 激活窗口
    2. 获取相对于应用程序窗口的控件坐标(将窗口置于0,0。打开Autoit Window Info,单击鼠标选项卡并获取按钮的位置)。那个位置通常都是一样的
    3. 当您的代码运行时,它必须使用WinGetPos获取窗口位置,然后添加您在步骤2中获得的控制位置。这是您的点击位置。
    4. 方法3 - PixelSearch(如果控件具有独特的颜色):

      1. 使用AutoIt Window Info(鼠标选项卡)
      2. 获取所需的颜色
      3. 使用PixelSearch
      4. 搜索
      5. 点击你得到的坐标
      6. 方法4 - ImageSearch:

        1. 获取ImageSearch UDF和DLL
        2. 制作按钮的图片
        3. 搜索并点击
        4. 注意:有时您需要提供脚本管理员权限才能自动执行某些窗口。

答案 1 :(得分:0)

当AutoIt窗口信息工具失败时,我成功使用了按钮/ ui控件的text属性:

ControlClick($hwin, '', '[CLASS:Button; TEXT:Cancel]')

试验“&”在其中一个字符前面(由Windows加下划线表示 Alt + 快捷键),因此请尝试“& Cancel”而不是“Cancel”。如果失败,请先尝试ControlFocus()

ControlFocus($hwin, '', '[CLASS:Button; TEXT:Cancel]')
ControlClick($hwin, '', '[CLASS:Button; TEXT:Cancel]')

检查.exe文件的GUI资源(例如,使用Resource Hacker)可能会公开控件的文本/属性。例如:

enter image description here