PyWinAuto - Application() несколько окон с одинаковым идентификатором процесса
У меня есть приложение, которое имеет 5 окон (1 окно, 4x панель), которые имеют родительский рабочий стол, и они используют один и тот же process_id.
Когда я пытаюсь что-то вроде этого:
for line in pywinauto.findwindows.find_windows(process=proc_id):
print line ### this will print all 5 handles of windows
app = Application().connect(handle=line) ### this will connect to specific handle
app.top_window().set_focus() ### this will set focus ONLY to one window and bring it to forward
time.sleep(5)
Этот цикл FOR должен выдвигать одно окно каждые 5 секунд (1 элемент control_type="Window" и 4 элемента control_type="Pane"). Но это приведет только к перемотке одного окна и ничего больше, и он получит 5-кратный фокус на нем. Смена окон не производится.
Спасибо
1 ответ
Потому что top_window() всегда выбирает первое верхнее окно. Что еще можно ожидать от этого метода? В любом случае, у нас есть планы переделать или убрать его.
Правильный метод для вашей цели - app.windows ():
for w in app.windows():
print(w.window_text())
w.set_focus()
Примечание: app.windows () возвращает список оболочек, поэтому возможен только листинг.children () или.descendants () без дополнительных неявных ожиданий и более подробных спецификаций поиска.