MyTetra Share
Делитесь знаниями!
ControlGetText / считывание из контролла
Время создания: 28.04.2017 12:08
Раздел: AutoHotkey - gui - Control
Запись: xintrea/mytetra_db_mcold/master/base/1493370486g5z8ruycle/text.html на raw.githubusercontent.com

ControlGetText, OutputVar [, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]


Параметры

OutputVar

Имя переменной, куда будет помещён считанный текст.

Control

Может задаваться как ClassNN (имя класса и номер данного экземпляра) или как имя/текст контрола. Все эти значения можно определить, используя программу Window Spy. При использовании имени/текста параметры их поиска можно задавать командой SetTitleMatchMode. Если параметр опущен или пустой, используется верхний контрол окна.

Чтобы указать контрол через его HWND (window handle, идентификатор окна), оставьте параметр Control пустым и задайте ahk_id %ControlHwnd% как значение параметра WinTitle - это работает также и для скрытых контролов, даже если обнаружение скрытых окон (команда DetectHiddenWindows) не включено. HWND, как правило, узнаётся через команды ControlGet Hwnd, MouseGetPos или DllCall.

WinTitle

Заголовок или часть заголовка окна (параметры поиска можно задавать командой SetTitleMatchMode). Если этот и следующие 3 параметра опущены, будет использовано последнее найденное окно. Если параметр задан буквой А и следующие 3 параметра опущены, будет использовано активное окно. Чтобы задать окно через его класс, используйте конструкцию ahk_class ТочноеИмяКласса (можно посмотреть программой Window Spy). Чтобы использовать идентификатор процесса (PID), задайте параметр как ahk_pid %ПеременнаяСодержащаяPID%. Чтобы использовать группу окон, задайте параметр как ahk_group ИмяГруппы. Чтобы использовать идентификатор окна, задайте параметр как ahk_id %ПеременнаяСодержащаяID%. Сектор поиска можно сузить, задав несколько критериев, например, My File.txt ahk_class Notepad.

WinText

Подстрока из одиночного текстового элемента окна (можно посмотреть программой Window Spy). Скрытые текстовые элементы определяются, если включено определение скрытого текста (команда DetectHiddenText).

ExcludeTitle

Окна, чей заголовок включает значение этого параметра, исключаются.

ExcludeText

Окна, чей текст включает значение этого параметра, исключаются.

ErrorLevel

Нуль, если команда выполнена успешно. Иначе 1.

Примечания

Чтобы считать текст из контролов ListView, ListBox или ComboBox, используйте команду ControlGet List.

Если считанный текст оказывается обрезанным (неполным), попробуйте использовать команду VarSetCapacity перед выполнением ControlGetText. Эта команда позволит увеличить ёмкость выходной переменной. Например, VarSetCapacity(OutputVar, 55). Замените 55 (байт) на размер, который наверняка больше, чем считываемый текст. Это бывает необходимо, т.к. некоторые приложения не отвечают правильно на сообщение WM_GETTEXTLENGTH, из-за чего AutoHotkey задаёт слишком малый размер выходной переменной.

Максимальный размер считываемого текста зависит от максимальной ёмкости переменных, которая может быть изменена директивой #MaxMem. В результате может заниматься большое количество оперативной памяти, если указанный контрол (например, редактор, в котором открыт большой документ) содержит текст большого объёма. Однако память, занятая под переменную, может быть освобождена после использования путём присвоения переменной пустого значения: OutputVar =

Текст, считанный из большинства контролов, будет иметь в концах строк возврат каретки и перевод строки (`r`n), а не один только перевод строки (`n).

Использование команды SetTitleMatchMode Slow излишне, т.к. ControlGetText всегда использует медленный (slow) метод (что позволяет ему работать в более широком диапазоне разных типов контролов).

Чтобы считать список всех контролов окна, используйте команду WinGet.

Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если это не задано командой DetectHiddenWindows.

Пример

ControlGetText, OutputVar, Edit1, Безымянный - Блокнот
Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования