; Пример 1
GUICreate('Координаты каретки', 350, 360)
$e = GUICtrlCreateEdit('Вводите текст', 10, 30, 310, 280)
GUISetState()
Do
	$a = WinGetCaretPos()
	ToolTip('x=' & $a[0] & ', y=' & $a[1], $a[0] + 10, $a[1] + 30) ; добавляем координаты элемента 10 и 30
Until GUIGetMsg() = -3
GUIDelete()

; ===========================================

; Пример 2
Local $aCaretPos = WinGetCaretPos()
If Not @error Then
	ToolTip("Первый метод получения координат", $aCaretPos[0], $aCaretPos[1])
EndIf
Sleep(2000)

; ===========================================

; Пример 3
$aCaretPos = _WinGetCaretPos()
If Not @error Then ToolTip("Второй способ получения координат", $aCaretPos[0], $aCaretPos[1])
Sleep(2000)

; Более надежный способ для получения координат каретки в MDI текстовых редакторах.
Func _WinGetCaretPos()
	Local $iXAdjust = 5
	Local $iYAdjust = 40

	Local $iOpt = Opt("CaretCoordMode", 0) ; Устанавливаем относительный режим и сохраняем предыдущую опцию.
	Local $aGetCaretPos = WinGetCaretPos() ; Извлекает относительные координаты каретки.
	Local $aGetPos = WinGetPos("[ACTIVE]") ; Извлекает координаты и размеры активного окна.
	Local $sControl = ControlGetFocus("[ACTIVE]") ; Извлекает ClassNameNN области с фокусом ввода с клавиатуры.
	Local $aControlPos = ControlGetPos("[ACTIVE]", "", $sControl) ; Извлекает координаты и размеры элемента.
	$iOpt = Opt("CaretCoordMode", $iOpt) ; Восстанавливает предыдущий режим "CaretCoordMode".

	Local $aReturn[2] = [0, 0] ; Создаёт массив, чтобы хранить координаты x, y.
	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 ; Возвращает массив.
	Else
		Return SetError(1, 0, $aReturn) ; Возвращает массив и устанавливает @error = 1.
	EndIf
EndFunc