Returns the coordinates of the caret in the foreground window.
WinGetCaretPos ( )
Success: | a 2-element array containing the following information: $aArray[0] = X coordinate $aArray[1] = Y coordinate |
Failure: | sets the @error flag to non-zero. |
WinGetCaretPos() might not return accurate values for Multiple Document Interface (MDI) applications if absolute CaretCoordMode is used. See example for a workaround. Note: Some applications report static coordinates regardless of caret position!
Local $aCaretPos = WinGetCaretPos()
If Not @error Then
ToolTip("First Method", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)
$aCaretPos = _WinGetCaretPos()
If Not @error Then
ToolTip("Second Method", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)
; A more reliable method to retrieve the caret coordinates in MDI text editors.
Func _WinGetCaretPos()
Local $iXAdjust = 5
Local $iYAdjust = 40
Local $iOpt = Opt("CaretCoordMode", 0) ; Set "CaretCoordMode" to relative mode and store the previous option.
Local $aGetCaretPos = WinGetCaretPos() ; Retrieve the relative caret coordinates.
Local $aGetPos = WinGetPos("[ACTIVE]") ; Retrieve the position as well as height and width of the active window.
Local $sControl = ControlGetFocus("[ACTIVE]") ; Retrieve the control name that has keyboard focus.
Local $aControlPos = ControlGetPos("[ACTIVE]", "", $sControl) ; Retrieve the position as well as the size of the control.
$iOpt = Opt("CaretCoordMode", $iOpt) ; Reset "CaretCoordMode" to the previous option.
Local $aReturn[2] = [0, 0] ; Create an array to store the x, y position.
If IsArray($aGetCaretPos) And IsArray($aGetPos) And IsArray($aControlPos) Then
$aReturn[0] = $aGetCaretPos[0] + $aGetPos[0] + $aControlPos[0] + $iXAdjust
$aReturn[1] = $aGetCaretPos[1] + $aGetPos[1] + $aControlPos[1] + $iYAdjust
Return $aReturn ; Return the array.
Else
Return SetError(1, 0, $aReturn) ; Return the array and set @error to 1.
EndIf
EndFunc ;==>_WinGetCaretPos