2015-12-03 13 views
-1

Итак, я работаю над проектом, и я застрял на этой части. Я пытаюсь найти положение эфира на печатной машине (мигающая строка при вводе текста) или в текущем текстовом поле, которое набирается.Autoit получает текущую позицию каретки или текущую позицию текстового поля

Основная часть, которая сложна, я ищу, чтобы сделать это для каждого вход на мой компьютер (поиск в Firefox, блокнот, переименование файлов, запись этого сообщения ...)

Я начинаю сомневаться, что авто-он может это сделать, я открыт для использования на другом языке, который может это сделать. (Я еще не проверял какой-либо другой язык, но еще не авто)

Я протестировал «WinGetCaretPos()» и несколько других случайных скриптов, но у них была та же проблема, они не вернули правильную позицию.

~ Спасибо

ответ

2

Не все элементы управления представляют собой стандартные оконные элементы управления, которые могут быть доступны с функциями AutoIt. Многие программы (особенно браузеры) имеют нестандартные элементы управления, поэтому «каждый вход» на компьютере может быть затруднен.

Вот пример того, как получить управляющую информацию любого активного окна, которое дает фокус на элемент управления И имеет стандартные элементы управления 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.

+0

Спасибо за помощь, это полезный скрипт. Я сделал еще несколько исследований, и я пришел к выводу, что этот подход не будет работать независимо от того, какой язык я использую. – Josiah

Смежные вопросы