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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как активировать окно, имея указатель $obj, где $obj=_IECreate() ?

Ответить
Настройки темы
[решено] Как активировать окно, имея указатель $obj, где $obj=_IECreate() ?

Старожил


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

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


Добрый день! Как активировать окно, имея указатель на него - $obj, где $obj=_IECreate() ?
Код: Выделить весь код
#include <IE.au3>
$obj=_IECreate()
$obj1=_IECreate("www.google.ru")
winsetstate($obj,"",@SW_Maximize); если тут написать winactivate($obj), тоже не сработает
В последней строчке кода действие должно производиться с первым окном. Вместо этого максимизируется окно google.ru. Программа как будто не признает $obj в качестве указателя на окно и максимизирует что попало, а не что нужно ) Как решить проблему?

P.S. Уже не в первый раз сталкиваюсь с такой проблемой, когда скрипт создает несколько окон браузера, а потом должен активизировать их в строго определенном порядке (попутно в каждом совершая действия).

Отправлено: 20:11, 20-09-2009

 

Ветеран


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

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


По счастью, объект «InternetExplorer.Application» уже имеет заготовленное разработчиками свойство «.HWND» (так что нам не нужно ничего придумывать с перебором окон или вызовами WinAPI), а остаётся лишь правильно использовать его:
Код: Выделить весь код
#include <IE.au3>

Local $obj = _IECreate()

WinSetState("[HANDLE:" & Hex($obj.HWND) & "]", "", @SW_Maximize)
Это сообщение посчитали полезным следующие участники:

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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


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

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

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


Старожил


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

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


Цитата Iska:
Теперь попробую порассуждать о том, почему всё-таки функция работала, но не с тем окном. »
Думаю, оно так и есть Спасибо.

Отправлено: 22:32, 20-09-2009 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как активировать окно, имея указатель $obj, где $obj=_IECreate() ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Zyxel - [решено] Как настроить два компа имея модем и свитч? Самая простая схема? Wet Сетевое оборудование 15 02-12-2009 02:18
Доступ - [решено] Как подключить (активировать) учётные записи? SergeZap Microsoft Windows 2000/XP 2 23-06-2008 11:25
как поставить дос на cd,не имея fdd Alyaa Хочу все знать 3 23-10-2006 23:54
Файл с расширением  *.obj SL Программирование и базы данных 4 10-10-2003 18:11
Можно ли создать указатель на указатель? Sharkky Программирование и базы данных 2 24-09-2003 14:35




 
Переход