所以我正在开展一个项目,我被困在这一部分。 我正在尝试找到以太的位置,键入插入符号(键入时闪烁的行)或正在键入的当前文本框。
困难的主要部分是我希望为我的计算机上的每个输入执行此操作(Firefox搜索,记事本,重命名文件,撰写此帖子......)
我开始怀疑自动它可以做到这一点,我愿意使用另一种可以做到这一点的语言。 (我还没有检查过任何其他语言,但还有Auto-it)
我测试了“WinGetCaretPos()”和其他一些随机脚本,但是他们遇到了同样的问题,他们没有返回正确的位置。
〜感谢
答案 0 :(得分:2)
并非所有控件都是可以使用AutoIt函数访问的标准窗口控件。许多程序(尤其是浏览器)都有非标准控件,因此计算机上的“每个输入”可能很难获得。
以下是如何获取任何活动窗口的控件信息的示例,该窗口为控件提供焦点并具有标准窗口控件。
HotKeySet("{ESC}", "Terminate")
While 1
Sleep(500)
GetControlFocus()
WEnd
Func GetControlFocus()
Local $hWinHandle = WinGetHandle("[Active]")
Local $sControl = ControlGetFocus($hWinHandle)
Local $sText = "The active window handle is: " & $hWinHandle & @CRLF
If $sControl <> "" Then
$sText &= "The control with focus in the active window is: " & $sControl & @CRLF
Local $aPos = ControlGetPos($hWinHandle, "", $sControl)
$sText &= "Mouse position: X: " & $aPos[0] & " Y: " & $aPos[1] & @CRLF & "Size: " & $aPos[2] & ", " & $aPos[3]
Else
$sText &= "The active window is not giving focus to a control that AutoIt recognizes."
EndIf
ToolTip($sText, 0, 0)
EndFunc ;==>GetControlFocus
Func Terminate()
Exit
EndFunc ;==>Terminate
您可以使用IUIAutomation和UDF获取其他程序的控制位置。但它不会像使用一些标准AutoIt函数那么简单。