Яндекс.Метрика

WinGetText -Autohotkey

Читает текст указанного окна.

Читает текст указанного окна.

WinGetText, OutputVar [, WinTitle, WinText, ExcludeTitle, ExcludeText]

Параметры

OutputVar Имя переменной, куда будет помещён считанный текст.
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.

Примечания

Возвращаемый командой текст в общем случае тот же, что показывает программа Window Spy. Однако, если определение скрытого текста было отключено командой DetectHiddenText, он не будет помещён в выходную переменную.

Каждый текстовый элемент оканчивается возвратом каретки и переводом строки, что в скрипте может быть представлено как `r`n. Чтобы извлечь отдельные строки или подстроки, используйте такие команды как StringGetPos и StringMid. Также можно использовать цикл разбора, чтобы просматривать текст по строкам или по словам.

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

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

В Windows 95/98/ME можно столкнуться с ограничением в 64 Кб для некоторых текстовых элементов в некоторых окнах.

Чтобы получить список всех элементов управления окна, следуйте примеру ниже:

WinGet, OutputVar, ControlList, WinTitle

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

Пример

Run, Calc.exe WinWait, Калькулятор WinGetText, text ; Будет использовано окно, найденное выше. MsgBox, Считанный текст:`n%text%
Теги страницы: