创建VBScript脚本检测iexplore

时间:2018-12-09 08:49:58

标签: vbscript

我想创建一个VBScript脚本来检测Internet Explorer的打开页面和在同一窗口中打开新选项卡。例如,当我通过www.google.com手动打开Internet Explorer时,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 :(得分:0)

一方面,您必须使用现有的Internet Explorer实例,而不是创建一个新实例。不幸的是,人们可能期望能够做到的方式(GetObject(, "InternetExplorer.Application"))对于Internet Explorer COM对象不起作用。 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

请注意,您必须在此处使用带尾号“&”的十六进制表示法,因为该值必须为Long,并且必须在Const定义中使用文字。诸如调用函数CLng之类的表达式无效。


或者,您可以通过完全忽略Navigate方法的第二个参数,而为第三个参数提供值"_blank"来在新选项卡中打开URL:

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

但是,我不确定这是否总是会在当前窗口中打开一个新标签页(可能取决于浏览器的标签页设置),因此,我建议如上所述使用第二个参数(标志)。