自动获取当前插入符位置或当前文本框位置
Autoit get current caret position Or current text box position
所以我正在做一个项目,但我卡在了这部分。
我正在尝试定位打字插入符(打字时闪烁的线)或正在输入的当前文本框的位置。
困难的主要部分是我希望对计算机上的每个输入都执行此操作(Firefox 搜索、记事本、重命名文件、编写此 post...)
我开始怀疑 auto-it 能否做到这一点,我愿意使用另一种可以做到这一点的语言。 (除了Auto-it我还没有检查任何其他语言)
我测试了 "WinGetCaretPos()" 和其他一些随机脚本,但它们有同样的问题,它们没有 return 正确的位置。
~谢谢
并非所有控件都是标准 window 控件,可以使用 AutoIt 函数访问。许多程序(尤其是浏览器)都有非标准控件,因此 "every input" 在计算机上可能很难获得。
下面是一个示例,说明如何获取任何活动 window 的控件信息,这些活动 window 给予控件焦点并且具有标准 windows 控件。
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 函数那么简单。
所以我正在做一个项目,但我卡在了这部分。 我正在尝试定位打字插入符(打字时闪烁的线)或正在输入的当前文本框的位置。
困难的主要部分是我希望对计算机上的每个输入都执行此操作(Firefox 搜索、记事本、重命名文件、编写此 post...)
我开始怀疑 auto-it 能否做到这一点,我愿意使用另一种可以做到这一点的语言。 (除了Auto-it我还没有检查任何其他语言)
我测试了 "WinGetCaretPos()" 和其他一些随机脚本,但它们有同样的问题,它们没有 return 正确的位置。
~谢谢
并非所有控件都是标准 window 控件,可以使用 AutoIt 函数访问。许多程序(尤其是浏览器)都有非标准控件,因此 "every input" 在计算机上可能很难获得。
下面是一个示例,说明如何获取任何活动 window 的控件信息,这些活动 window 给予控件焦点并且具有标准 windows 控件。
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 函数那么简单。