AutoIT ControlGetPos返回错误的XY位置

时间:2014-08-19 19:34:39

标签: automated-tests autoit

在AutoIT中,ControlGetPos函数应该返回窗口中控件(aka按钮)的位置。我应该能够将窗口位置添加到屏幕上获取控件的位置

  run("calc")
  WinWaitActive("Calculator")
  $m = WinGetPos('[ACTIVE]')
  $k = ControlGetPos('[ACTIVE]','','Button9')
  $k[0] += $m[0]
  $k[1] += $m[1]
  MouseClick("main",$k[0] + $k[2]/2, $k[1] + $k[3]/2)  ; click middle of button
  Sleep(2000)
  WinClose("Calculator")
  Sleep(2000)

但这不起作用。点击太高,大约40像素。为什么呢?

1 个答案:

答案 0 :(得分:0)

问题是ControlGetPos返回窗口的 相对于客户区 的位置,忽略窗口的边框和标题栏。

而是使用ControlGetHandle,然后使用WinGetPos,如下所示

  run("calc")
  WinWaitActive("Calculator")
  $hc = ControlGetHandle('[ACTIVE]','','Button9')
  $k = WinGetPos($hc)
  MouseClick("main",$k[0] + $k[2]/2, $k[1] + $k[3]/2)  ; click middle of button
  Sleep(2000)
  WinClose("Calculator")
  Sleep(2000)