![]() |
Как активировать окно, имея указатель $obj, где $obj=_IECreate() ?
Добрый день! Как активировать окно, имея указатель на него - $obj, где $obj=_IECreate() ?
Код:
#include <IE.au3> P.S. Уже не в первый раз сталкиваюсь с такой проблемой, когда скрипт создает несколько окон браузера, а потом должен активизировать их в строго определенном порядке (попутно в каждом совершая действия). |
По счастью, объект «InternetExplorer.Application» уже имеет заготовленное разработчиками свойство «.HWND» (так что нам не нужно ничего придумывать с перебором окон или вызовами WinAPI), а остаётся лишь правильно использовать его:
Код:
#include <IE.au3> |
Цитата:
Теперь попробую порассуждать о том, почему всё-таки функция работала, но не с тем окном. Подозреваю, что Вы основывали свой метод приведённого решения на предыдущем опыте работы подобным же образом, однако сие не есть правильное решение. Как я уже упоминал выше, $obj есть объект «InternetExplorer.Application». Объект может иметь одно свойство/метод, используемые «по умолчанию», когда не указывается имя этого самого свойства/метода. Однако, AutoIt сие не использует, потому строковое представление (которое требуется «WinSetState()» как заголовок окна) переменной $obj == "", то есть, согласно правилам поиска окон, совпадёт с любым окном. Ну, и, поскольку перебор окон идёт, как я понимаю, в порядке Z-order, — будет найдено первое же окно, как правило — окно переднего плана. Оно и будет максимизировано (если Вы, пока ещё идёт загрузка страницы во втором экземпляре браузера, активируете окно Блокнота, то именно оно и будет максимизировано). Вот так. |
Цитата:
|
Время: 13:32. |
Время: 13:32.
© OSzone.net 2001-