Что нового

Проверка запуска Internet Explorer

Asgaroth

Новичок
Сообщения
5
Репутация
0
В скрипте одна из пользовательских функций запускает IE
($oIE = _IECreate)
Другая функция передает фокус IE
(_IEAction ($oIE, "focus"))

Извините за тупость, но как перед передачей фокуса сделать проверку на существование ранее созданного IE?
 

killbond

Осваивающий
Сообщения
96
Репутация
32
Код:
#include <IE.au3>
$oIE = _IECreate ("www.autoitscript.com")
If ProcessExists ( "IEXPLORE.EXE" ) then
	_IEAction ($oIE, "focus")
	; ... some code
EndIf
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
У меня так получается:

Код:
#include <IE.au3>

_IECreate("http://www.mail.ru/")
If WinWait("[CLASS:IEFrame]", "@MAIL.RU: почта, новости, работа", 3) <> 0 Then
	MsgBox(0, "", "OK")
Else
	MsgBox(0, "", "NO")
EndIf
 
Автор
A

Asgaroth

Новичок
Сообщения
5
Репутация
0
killbond сказал(а):
Код:
#include <IE.au3>
$oIE = _IECreate ("www.autoitscript.com")
If ProcessExists ( "IEXPLORE.EXE" ) then
	_IEAction ($oIE, "focus")
	; ... some code
EndIf

Думал об этом, но в таком случае проверка будет пройдена, если IE был запущен пользователем, а не скриптом
 

killbond

Осваивающий
Сообщения
96
Репутация
32
Думал об этом, но в таком случае проверка будет пройдена, если IE был запущен пользователем, а не скриптом

Хм... т.е. если окно запушено скриптом, проверка не будет пройдена? А как же это:

Код:
#include <IE.au3>
$oIE = _IECreate ("www.autoitscript.com")
If ProcessExists ( "IEXPLORE.EXE" ) then
    _IEAction ($oIE, "focus")
Else
	MsgBox (16 , "", "Process not found!")
EndIf


Если проверку не пройдет, то выскочит MsgBox.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Asgaroth
Я свой пример поправил. Наверное, на Вашей странице тоже есть какой-то текст.
 
Автор
A

Asgaroth

Новичок
Сообщения
5
Репутация
0
killbond сказал(а):
Думал об этом, но в таком случае проверка будет пройдена, если IE был запущен пользователем, а не скриптом

Хм... т.е. если окно запушено скриптом, проверка не будет пройдена? А как же это:

Код:
#include <IE.au3>
$oIE = _IECreate ("www.autoitscript.com")
If ProcessExists ( "IEXPLORE.EXE" ) then
    _IEAction ($oIE, "focus")
Else
	MsgBox (16 , "", "Process not found!")
EndIf


Если проверку не пройдет, то выскочит MsgBox.

Это все верно, но если до запуска скрипта IE уже был запущен, то процесс будет висеть, соответственно _IEAction попытается передать фокус несуществующему $oIE


Добавлено:
Сообщение автоматически объединено:

madmasles сказал(а):
Asgaroth
Я свой пример поправил. Наверное, на Вашей странице тоже есть какой-то текст.

О! Вот это хорошая идея, спасибо.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
При запуске пусть скрипт проверит, запущен IE или нет. Если запущен, то передаст ему фокус, если нет, то сам запустит и передаст фокус.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Garrett
именно для этих целей есть флаг $f_tryAttach = 1 при вызове функции
Код:
_IECreate("about:blank", 1)
 
Автор
A

Asgaroth

Новичок
Сообщения
5
Репутация
0
Kaster сказал(а):
Garrett
именно для этих целей есть флаг $f_tryAttach = 1 при вызове функции
Код:
_IECreate("about:blank", 1)
О, спасибо.
Из-за плохого знания английского не обратил внимания на эту опцию.


Добавлено:
Сообщение автоматически объединено:

Всем спасибо, тему можно считать решенной.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Asgaroth [?]
тему можно считать решенной
ну это в твоих силах. жмакай на соответствующую кнопку под сообщениями
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Kaster сказал(а):
Garrett
именно для этих целей есть флаг $f_tryAttach = 1 при вызове функции
Код:
_IECreate("about:blank", 1)

Именно этот параметр я имел ввиду. То есть при запуске скрипт сначала проверит, запущен IE или нет, и если запущен, передаст ему фокус, ели нет, то запустит, и передаст фокус. Видимо не удачно выразился. Извиняюсь. :smile:
 
Верх