Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата evg64:
Программа как будто не признает $obj в качестве указателя на окно и максимизирует что попало, а не что нужно
Тут Вы не правы: $obj никак не есть указатель на окно; в данном контексте, согласно справке AutoIt, функция «_IECreate()» возвращает ссылку на объект «InternetExplorer.Application» (судя по коду функции — всё верно ).

Теперь попробую порассуждать о том, почему всё-таки функция работала, но не с тем окном. Подозреваю, что Вы основывали свой метод приведённого решения на предыдущем опыте работы подобным же образом, однако сие не есть правильное решение. Как я уже упоминал выше, $obj есть объект «InternetExplorer.Application». Объект может иметь одно свойство/метод, используемые «по умолчанию», когда не указывается имя этого самого свойства/метода. Однако, AutoIt сие не использует, потому строковое представление (которое требуется «WinSetState()» как заголовок окна) переменной $obj == "", то есть, согласно правилам поиска окон, совпадёт с любым окном. Ну, и, поскольку перебор окон идёт, как я понимаю, в порядке Z-order, — будет найдено первое же окно, как правило — окно переднего плана. Оно и будет максимизировано (если Вы, пока ещё идёт загрузка страницы во втором экземпляре браузера, активируете окно Блокнота, то именно оно и будет максимизировано). Вот так.

Отправлено: 21:41, 20-09-2009 | #3