Необходимо обновить страницы в каждом окне IE используя vb-script.
Мой подход к решению: через WMI получаем список процессов интернет експлорера. Получаем PID процесса. Теперь через Shell можем активировать приложение и посылать ему (через SendKeys) клавиатурные сочетания. Напирмер то же "обновить" (F5). Но возникает одно но: все окна принадлежат одному процессу (независимо от количества окон - процесс в памяти висит только один). Соответственно и PID - тоже один. И если мы активируем приложение через Shell - то акивируется только одно окно. Мне же нужно перебрать все окна. Но через Shell я этого сделать не могу.
Поэтому напрашивается вопрос: как, имея PID процесса получить объектную модель IE? Что бы можно было через эту модель обойти все окна и выполнить все необходимые действия? Если же подключаться к запущенному IE через ConnectObject - то я получаю доступ только к событиям IE. Мне же нужно получить доступ и к методам.
Привожу скрипт:
- Код: Выделить всё
Option Explicit
dim WMI
dim SQuery
dim Processes
dim Process
dim WshShell
Dim Result
Dim IE, IePID, obIE, IEprocess
Dim WShell
Set WShell=CreateObject("Wscript.Shell")
getieprocessid
If IePID=vbnullstring Then
WScript.Echo "Процесс IE не найден."
WScript.Quit(1)
Else
WShell.AppActivate IePID
WScript.Sleep(1000)
WShell.SendKeys "{TAB}www.r-demidow.front.ru{ENTER}"
End If
WScript.Quit(0)
sub GetIEProcessID()
'Соединяемся с WMI
set WMI=GetObject("winMgmts:")
'Формируем текст запроса
SQuery="SELECT * FROM Win32_Process"
'Создаем коллекцию-результат запроса
set Processes=WMI.ExecQuery(SQuery)
If Processes.count=0 Then
IEePID=-1
Else
For Each Process In Processes
If ucase(Process.name)=UCase("iexplore.exe") Then
IEPID=Process.Handle
set IEprocess=Process
Exit For
End If
Next
End If
End sub
В IEprocess я получаю объект процесса. Как мне имея этот объект получить объектную модель?