Что нового

[Автоматизация] WinWaitActive() при динамически формируемом title

f9n6001

Новичок
Сообщения
15
Репутация
0
Фотка окна

Информация по окну:
--- Window Info ---
Title : 1 СЭТ-4ТМ.02 Версия Конфигуратора от 01.04.14
Class : ThunderRT6MDIForm
Position : 7, 0
Size : 1106, 684
Client Size : 1098, 630
Style : 0x16CF0000
ExStyle : 0x00040100
Handle : 0x00090250
PID : 2540

--- Mouse Info ---
Position (screen) : 314, 21
Position (window) : 307, 21
Position (client) : 303, -29
Pixel Color (hex) : 0x0164F9
Pixel Color (dec) : 91385
Cursor ID : 2

Так вот в этом "1 СЭТ-4ТМ.02" 1 - адрес, а СЭТ-4ТМ.02 - тип последнего опрошенного счетчика. То есть при каждом очередном запуске программы заголовок окна может быть другим. Я пробовал изменить код на:
Код:
WinWaitActive("Версия Конфигуратора")

но оно не сработало. Функция, видимо, ищет окно по первым символам заголовка.

Такой код:
Код:
Run($PathExe)
SetTitleMatchMode 2
WinWaitActive($MainWindow)


Дает ошибку

Вопрос: существуют ли какие-то другие способы идентификации окна в смысле проверки его активности? Либо какую-то библиотеку надо подключить для SetTitleMatchMode?

Спасибо.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
запускать программу через скрипт. получить PID процесса, и по этому идентификатору получить заголовок окна

f9n6001 [?]
а это откуда взято?
 
Автор
F

f9n6001

Новичок
Сообщения
15
Репутация
0
joiner сказал(а):
а это откуда взято?
Точно. AutoHotkey и AutoIt, хоть и похожи, но не совсем :smile:) Не в ту доку глянул. В нашем случае вариант будет такой:
Код:
Run($PathExe)
AutoItSetOption("WinTitleMatchMode",2)
WinWaitActive($MainWindow)
 
Автор
F

f9n6001

Новичок
Сообщения
15
Репутация
0
f9n6001 сказал(а):
В нашем случае вариант будет такой:

Нарыл еще один вариант, окно вообще отвязывается от title и привязывается к pid процесса. По сути это то, о чем писал joiner:
Код:
$run = Run($PathExe)
#include'winapiex.au3'
$ha=_WinAPI_EnumProcessWindows($run); это определяет handle окна
While Not WinActivate($ha[1][0])
  Sleep(500)
WEnd
 
Верх