Vintets
Новичок
- Сообщения
- 12
- Репутация
- 4
Есть сторонняя программа на Delphi с полем редактора "TSynEdit". Не получается получить позицию каретки для определения текущей строки на котором находится каретка.
Указатель ControlID получает. Весь текст из Edit получает функцией ControlGetText.
Пользовался AutoIt V3 Window Info, Control Viewer, wInformer
В итоге в консоли:
Как видно из ControlCommand срабатывает только команда "IsVisible".
Количество строк не показывает (это в принципе не критично, текст то извлекает).
Текущую строку всегда отображает как "1".
Указатель ControlID получает. Весь текст из Edit получает функцией ControlGetText.
Пользовался AutoIt V3 Window Info, Control Viewer, wInformer
Код:
If Not WinExists('[CLASS:TfrmEdit]') Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
$hWnd = WinGetHandle('[CLASS:TfrmEdit]')
ConsoleWrite('найдено окно hWnd = ' & $hWnd & @CRLF)
$hEdit = ControlGetHandle($hWnd, '', '[CLASS:TSynEdit; INSTANCE:1]')
ConsoleWrite('найден контрол hWnd = ' & $hEdit & @CRLF)
ConsoleWrite('отображение: ' & ControlCommand($hWnd, '', '[CLASS:TSynEdit; INSTANCE:1]', 'IsVisible') & @CRLF)
WinActivate($hWnd)
ControlFocus($hWnd, '', '[CLASS:TSynEdit; INSTANCE:1]')
ConsoleWrite('Всего строк ' & ControlCommand($hWnd, '', '[CLASS:TSynEdit; INSTANCE:1]', 'GetLineCount') & @CRLF)
; определяем номер строки
$cur_line = ControlCommand($hWnd, '', '[CLASS:TSynEdit; INSTANCE:1]', 'GetCurrentLine') ; '[CLASSNN:TSynEdit; INSTANCE:1]'
ConsoleWrite('Текущая строка № ' & $cur_line & @CRLF)
; извлекаем текст
$Text = ControlGetText('[CLASS:TfrmEdit]', '', '[CLASS:TSynEdit]')
ConsoleWrite('Текст элемента Edit:' & @CRLF & $Text)
В итоге в консоли:
Код:
найдено окно hWnd = 0x0001085A
найден контрол hWnd = 0x00EB0782
отображение: 1
Всего строк 0
Текущая строка № 1
Текст элемента Edit:
// Author: Anonymous
// Version: 1.0 (17.06.2016)
#name "New Script"
print("Hello, world!")
HALT
Как видно из ControlCommand срабатывает только команда "IsVisible".
Количество строк не показывает (это в принципе не критично, текст то извлекает).
Текущую строку всегда отображает как "1".