Перейти на главную страничку сайта (список статей, файлы для скачивания)
Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.
Оригинал статьи в AutoHotkey.chm: "WinGetText", в содержании - "Window Management" - "WinGetText", v1.0.46.07.
Ник переводчика: YMP.
Настоящее имя переводчика: Юрий Попов.
Читает текст указанного окна.
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 | Окна, чей текст включает значение этого параметра, исключаются. |
Ноль, если команда выполнена успешно; иначе 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%
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.