在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像素。为什么呢?
答案 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)