Создать скрипт VBScript для обнаружения iexplore - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу создать сценарий VBScript для обнаружения открытия страницы Internet Explorer и открытия новой вкладки в том же окне.Например, когда я вручную открываю Internet Explorer на www.google.com, сценарий VBScript будет выполнять:

  • обнаруживать и открывать новую вкладку в том же окне с помощью www.example.com
  • , носделать это только один раз

Я пытался с этим кодом:

Set wshShell = CreateObject("WScript.Shell")
Do
    page1 = wshShell.AppActivate("Blank page - Internet Explorer")
    If page1 = True Then
        Set page2 = CreateObject("InternetExplorer.Application")
        page2.Navigate "http://www.example.com", CLng(navOpenInNewTab)
    End If
    WScript.Sleep 500
Loop

1 Ответ

0 голосов
/ 09 декабря 2018

С одной стороны, вы должны использовать существующий экземпляр Internet Explorer вместо создания нового.К сожалению, способ, которым можно было бы ожидать этого (GetObject(, "InternetExplorer.Application")), не работает для COM-объектов Internet Explorer.AppActivate также здесь не помогает, потому что он не возвращает дескриптор объекта приложения, который вам нужен для вызова его методов.Вместо этого вам нужно сделать это следующим образом:

Set app = CreateObject("Shell.Application")
For Each wnd In app.Windows
  If InStr(1, wnd.FullName, "iexplore.exe", vbTextCompare) > 0 Then
    Set ie = wnd
    Exit For
  End If
Next

Если вы хотите выбрать экземпляр, у которого открыта определенная страница, вы можете, например, проверить заголовок этой страницы, чтобы сделать выбор:

wnd.Document.Title = "something"

или

InStr(1, wnd.Document.Title, "something", vbTextCompare) > 0

Ваша вторая проблема заключается в том, что VBScript не распознает символическую константу navOpenInNewTab.Вы должны либо использовать числовое значение (как определено в перечислении BrowserNavConstants):

ie.Navigate "http://www.example.com", CLng(2048)

, либо сначала определить константу самостоятельно:

Const navOpenInNewTab = &h0800&
ie.Navigate "http://www.example.com", navOpenInNewTab

Примечаниечто здесь вы должны использовать шестнадцатеричную запись с конечным амперсандом, потому что значение должно быть длинным, и вы должны использовать литералы в определениях Const.Выражения, такие как вызов функции CLng, недопустимы.


В качестве альтернативы вы можете открыть URL-адрес в новой вкладке, полностью пропустив второй параметр метода Navigate ивместо этого предоставив значение "_blank" для третьего параметра:

ie.Navigate "http://www.example.com", , "_blank"

Однако я не уверен, что это всегда откроет новую вкладку в текущем окне (может зависеть от настроек вкладки браузера),поэтому я бы рекомендовал использовать второй параметр (флаги), как описано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...