повторное использование Internet Explorer COM Automation Object - PullRequest
6 голосов
/ 03 июня 2009

Я использую макросы VBScript для использования объекта автоматизации COM InternetExplorer.Application и пытаюсь повторно использовать существующий экземпляр этого объекта.

Из того, что я прочитал, я должен иметь возможность использовать метод GetObject () в vbscript для захвата существующего экземпляра этого объекта.

Когда я выполняю следующий код, я получаю «Ошибка создания объекта - ошибка синтаксиса моникера».

Является ли моя проблема действительно синтаксисом?

Является ли моя проблема в том, как я пытаюсь использовать этот объект?

или может то, чего я пытаюсь достичь, просто не будет сделано?

Код:

Dim IEObject as object

Sub Main  
  Set IEObject =  GetObject( "InternetExplorer.Application" )

  'Set the window visable
  IEObject.Visible = True

  'Navigate to www.google.com
  IEObject.Navigate( "www.google.com" )
End Sub

Кроме того, у меня нет проблем с запуском CreateObject (), который открывает новое окно Internet Explorer и перемещается туда, куда я хочу, но я бы не хотел, чтобы макрос открывал несколько экземпляров Internet Explorer.

1 Ответ

5 голосов
/ 03 июня 2009

Попробуйте:


Set IEObject =  GetObject( ,"InternetExplorer.Application" )

* Обратите внимание на запятую перед "InternetExplorer.Application"

РЕДАКТИРОВАТЬ: Попробуйте это:


Dim IE As SHDocVw.InternetExplorer

Set IE = GetObject(,"InternetExplorer.Application")

Вы также можете попробовать это:


Dim ShellApp
Set ShellApp = CreateObject("Shell.Application")
Dim ShellWindows
Set ShellWindows = ShellApp.Windows()
Dim i
For i = 0 To ShellWindows.Count - 1
    If InStr(ShellWindows.Item(i).FullName, "iexplore.exe") <> 0 Then
        Set IEObject = ShellWindows.Item(i) 
    End If
Next
IEObject.Navigate2("http://www.google.com")

РЕДАКТИРОВАТЬ:
То, что вы пытаетесь, может оказаться невозможным, посмотрите на это. http://support.microsoft.com/kb/239470

...