Работа с несколькими экземплярами IE
От: agat344  
Дата: 13.02.08 16:57
Оценка:
Как работать с одним экземпляром Internet Explorer я знаю —

Dim WithEvents wbrowser1 As SHDocVw.InternetExplorer

Private Sub Form_Load()
Set wbrowser1 = CreateObject("InternetExplorer.Application")
wbrowser1.Navigate ("http://www.mail.ru")
End Sub

Private Sub Wbrowser1_DocumentComplete(ByVal pDisp As Object, url As Variant)
MsgBox "Загрузка завершена"
End Sub


А как создать и главное обрабатывать события нескольких IE мне не понятно.

Единственное что мне пришло в голову, это объявить объект как массив элементов и создавать новый экземпляр как элемент этого массива —

Dim wbrowser1(20) As Object
index = 0

Set wbrowser1(index) = CreateObject("InternetExplorer.Application")
index = index + 1

wbrowser1(index).Navigate "http://www.mail.ru"



В этом случае всё создаётся правильно, но как обрабатывать события этих экземпляров не понятно.

Есть какие-нибудь варианты?
Желательно с текущим кодом.
Re: Работа с несколькими экземплярами IE
От: Chorkov Россия  
Дата: 14.02.08 12:41
Оценка:
Здравствуйте, agat344, Вы писали:

A>Как работать с одним экземпляром Internet Explorer я знаю -


A>
A>Dim WithEvents wbrowser1 As SHDocVw.InternetExplorer

A>Private Sub Form_Load()
A>Set wbrowser1 = CreateObject("InternetExplorer.Application")
A>wbrowser1.Navigate ("http://www.mail.ru")
A>End Sub

A>Private Sub Wbrowser1_DocumentComplete(ByVal pDisp As Object, url As Variant)
A>MsgBox "Загрузка завершена"
A>End Sub
A>


A>А как создать и главное обрабатывать события нескольких IE мне не понятно.


A>Единственное что мне пришло в голову, это объявить объект как массив элементов и создавать новый экземпляр как элемент этого массива -


A>
A>Dim wbrowser1(20) As Object
A>index = 0

A>Set wbrowser1(index) = CreateObject("InternetExplorer.Application")
A>index = index + 1

A>wbrowser1(index).Navigate "http://www.mail.ru"
A>



A>В этом случае всё создаётся правильно, но как обрабатывать события этих экземпляров не понятно.


A>Есть какие-нибудь варианты?

A>Желательно с текущим кодом.


Создай отдельный класс и создавай отдельный экземпялр класса для перехвата событий каждого экземпляра InternetExplorer.Application

class: InternetExplorerHolder:
Dim WithEvents wbrowser1 As SHDocVw.InternetExplorer

Public Sub Initilize(ByVal url as String)
Set wbrowser1 = CreateObject("InternetExplorer.Application")
wbrowser1.Navigate url
end Sub

'  Всю логику обработки событий IE, перенести из основной формы сюда.

Private Sub Wbrowser1_DocumentComplete(ByVal pDisp As Object, url As Variant)
MsgBox "Загрузка завершена"
End Sub


На твоей старой форме:
Dim Holders as New Collection

private Sub AppendExplorer(ByVal url as String)
 Dim Holder as InternetExplorerHolder
 Set Holder = New InternetExplorerHolder
 Holder.Initilize url
 Holders.Add Holder
end sub

Private Sub Form_Load()
AppendExplorer  "http://www.mail.ru"
AppendExplorer  "http://www.ya.ru"
...
End Sub
Re[2]: Работа с несколькими экземплярами IE
От: mihart  
Дата: 28.04.08 07:32
Оценка:
Я при работе с IE создавал два класса, один — обертка IE, второй коллекция оберток.
Первый отслеживает события IE, второй отслеживает их открытие, закрытие и удаляет из коллекции обертку, если соответствующий IE закрыт.

Если нужно могу поискать код классов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.