Тема: AHK: Определить наличие текста контрола, если его class меняется.
Требуется определить присутствует ли в каком-либо из контролов запущенной программы определенный текст, например, фраза "Форматированный текст". Это нетрудно сделать зная имя/classNN/HWND контрола. Как быть если эти значения контрола меняются после каждого нового запуска программы, и их нельзя определить раз и навсегда? При этом нужно избежать наведение курсора и определение координат контрола. Кстати, AhkSpy показывает текст из этого контрола в своей вкладке Window Text среди других. Какие варианты возможны?
Для своей задачи пока сделал так. Взял во внимание то, что хотя и classNN контрола всегда другой, но все-таки некоторая часть его остаётся постоянной. Отсюда следующий код:
WinGet, List, ControlList
RegExMatch(List, "AWL:\w{4}0000:80:0:0:0:02", ControlName)
MsgBox, %ControlName%
ControlGetText, txt, %ControlName%, ahk_class FineReader15MainWindowClass,
; MsgBox %txt%
If txt != Форматированный текст
{
MsgBox Установите тип сохранения: Форматированный текст.
Return
}
MsgBox Продолжим...
Пока (сегодня) это срабатывает. Но уверенности, что class контрола всегда будет укладываться в составленную регулярку, нет. Вопрос: можно ли все это сделать более надежным? Для моей задачи даже не важно в каком контроле эта фраза будет находиться, важно лишь знать есть она или нет.