自动获取当前插入位置或当前文本框位置

时间:2015-12-03 18:51:36

标签: autoit

所以我正在开展一个项目,我被困在这一部分。 我正在尝试找到以太的位置,键入插入符号(键入时闪烁的行)或正在键入的当前文本框。

困难的主要部分是我希望为我的计算机上的每个输入执行此操作(Firefox搜索,记事本,重命名文件,撰写此帖子......)

我开始怀疑自动它可以做到这一点,我愿意使用另一种可以做到这一点的语言。 (我还没有检查过任何其他语言,但还有Auto-it)

我测试了“WinGetCaretPos()”和其他一些随机脚本,但是他们遇到了同样的问题,他们没有返回正确的位置。

〜感谢

1 个答案:

答案 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函数那么简单。