Вы можете задать любой вопрос по программе Autohotkey в нашей группе Вконтакте. Если решение требует более высокой квалификации- можно обратиться непосредственно ко мне.
Группа Вконтакте | Электронная почта | Симаков Яков ВК |
Читает текст указанного окна.
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 | Окна, чей текст включает значение этого параметра, исключаются. |
Ноль, если команда выполнена успешно; иначе 1.
Возвращаемый командой текст в общем случае тот же, что показывает программа Window Spy. Однако, если определение скрытого текста было отключено командой DetectHiddenText, он не будет помещён в выходную переменную.
Каждый текстовый элемент оканчивается возвратом каретки и переводом строки, что в скрипте может быть представлено как `r`n. Чтобы извлечь отдельные строки или подстроки, используйте такие команды как StringGetPos и StringMid. Также можно использовать цикл разбора, чтобы просматривать текст по строкам или по словам.
Если считанный текст оказывается обрезанным (неполным), попробуйте использовать команду VarSetCapacity перед выполнением WinGetText. Эта команда позволит увеличить ёмкость выходной переменной. Например, VarSetCapacity(OutputVar, 55). Замените 55 (байт) на размер, который наверняка больше, чем считываемый текст. Это бывает необходимо, т.к. некоторые приложения не отвечают правильно на сообщение WM_GETTEXTLENGTH, из-за чего AutoHotkey задаёт слишком малый размер выходной переменной.
Максимальный размер считываемого текста зависит от максимальной ёмкости переменных, которая может быть изменена директивой #MaxMem. В результате может заниматься большое количество оперативной памяти, если целевое окно (например, редактор, в котором открыт большой документ) содержит текст большого объёма. Иногда можно избежать этого, считывая текст окна по частям командой ControlGetText. В любом случае память, занятая под переменную, может быть освобождена после использования путём присвоения переменной пустого значения: OutputVar =
Чтобы получить список всех элементов управления окна, следуйте примеру ниже:
Заголовки и текст окон чувствительны к регистру. Скрытые окна не определяются, если только это не задано командой DetectHiddenWindows.