Vbscript 正在寻找在新选项卡中加载url并在完成后更改标题的方法

Vbscript 正在寻找在新选项卡中加载url并在完成后更改标题的方法,vbscript,title,Vbscript,Title,我可以在新窗口上加载url,并使用以下内容更改web标题: Set IE = CreateObject("InternetExplorer.Application") set WshShell = WScript.CreateObject("WScript.Shell") IE.Navigate "http://www.google.com" IE.Visible = True While IE.Busy Wend While IE.Document.ReadyState <> "c

我可以在新窗口上加载url,并使用以下内容更改web标题:

Set IE = CreateObject("InternetExplorer.Application")
set WshShell = WScript.CreateObject("WScript.Shell")
IE.Navigate "http://www.google.com"
IE.Visible = True
While IE.Busy
Wend
While IE.Document.ReadyState <> "complete"
Wend
IE.Document.Title = "yoyo"
这允许我在同一浏览器(IE)上打开新选项卡,但我无法更改页面标题

任何帮助都将不胜感激

看这里:

' VB Script Document
' http://stackoverflow.com/questions/22821984/looking-for-a-way-to-load-url-in-new-tab-and-change-the-title-once-done
'
option explicit
On Error Goto 0

Dim strMyUrl    : strMyUrl = "http://www.avg.com" 'strMyUrl = "http://www.jysk.cz" 'strMyUrl = "https://www.google.cz" 'strMyUrl = "www.microsoft.com"

Dim strWTitle   : strWTitle = "yoyo"

Dim strResult   : strResult = WScript.ScriptName ' 

Dim WshShell    : Set WshShell = WScript.CreateObject( "WScript.Shell")
Dim IE              : Set IE = Nothing
Dim oIE             : Set oIE = Nothing

Dim intWExist, BrowserNavFlag, intButton, sRetVal

intWExist = FindIE( strMyUrl, oIE) 'look for MSIE window'

    set IE = oIE

Select Case intWExist
Case 3
    ''' MSIE window found, URL match, window title match
    ''' (not implemented yet)
Case 2
    ''' MSIE window found, URL match
Case 1
    ''' MSIE window found, no URL match
    ''' BrowserNavFlag = 65536 ' navOpenNewForegroundTab
    BrowserNavFlag = 2048 ' navOpenInNewTab
    IE.Navigate2 strMyUrl, CLng( BrowserNavFlag), "_blank"
Case Else
    ''' MSIE window not found
    Set IE = CreateObject( "InternetExplorer.Application")
    BrowserNavFlag = 1
    IE.Navigate strMyUrl    ', CLng( BrowserNavFlag)
End Select

IE.Visible = True

While IE.Busy
    Wscript.Sleep 100
Wend
While IE.Document.ReadyState <> "complete" 'Or IE.ReadyState <> 4
    Wscript.Sleep 100
Wend
    'intButton = WshShell.Popup( "watch how MSIE title change", 1)
If intWExist <> 1 Then
    intWExist = 2
Else
    Set oIE = Nothing
    Set IE = Nothing
    strResult = strResult & vbNewLine & vbTab & "FindIE() pass # 2"
    Wscript.Sleep 2000 'additional time for the Navigate2 method'
    intWExist = FindIE( strMyUrl, oIE) 'get right object for newly created tab'
    If intWExist = 2 Then
        set IE = oIE
    End If
End If

If intWExist = 2 Then
    IE.Document.Title = strWTitle
    sRetVal = "done"
Else
    sRetVal = "'IE.Document.Title = strWTitle' - not renamed"
End If

Set IE = Nothing
Wscript.Echo strResult & vbNewLine & sRetVal ' propagate result

Private Function FindIE( ByVal sUrl, ByRef oObj)
' parameters
' sUrl (input)  string
' oObj (output) object
' returns 
' 0 = any MSIE window not found - or found but not accessible   
' 1 = a MSIE window found
' 2 = 1 and address line match
' 3 = 2 and title match (not implemented yet)
    Dim ww, tpnm, tptitle, tpfulln, tpUrl, tpUrlUnencoded
    Dim errNo, errStr, intLoop, intLoopLimit
    Dim iFound : iFound = 0
    Dim shApp    : Set shApp = CreateObject( "shell.application")
    With shApp
        For Each ww In .windows
            tpfulln = ww.FullName
            strResult = strResult & vbNewLine & ww.Application & vbTab & tpfulln
            If Instr( 1, Lcase( tpfulln), "iexplore.exe", 1) <> 0 Then
                If iFound > 0 Then
                Else
                    Set oObj = ww
                End If
                tptitle = "x x x" : tpUrl = "" : tpUrlUnencoded = ""
                intLoopLimit = 100 ' to look for attributes max. intLoopLimit/10 seconds
                intLoop = 0
                While intLoop < intLoopLimit
                    intLoop = intLoop + 1
                    On Error Resume Next
                    tpnm = typename( ww.document)
                    errNo = Err.Number
                    If errNo <> 0 Then
                        'error if  page not response (yet)' 
                        errStr = "Error # " & CStr( errNo) & " " & Err.Description
                        Wscript.Sleep 100
                    Else
                        iFound = 1
                        intLoopLimit = intLoop  ' end While..Wend loop and preserve loop counter
                        tptitle = ww.document.title
                        tpUrl = ww.document.URL
                        tpUrlUnencoded = ww.document.URLUnencoded
                        errStr = tpnm
                    End If
                    On Error Goto 0
                Wend
                strResult = strResult & vbTab & errStr & " " & CStr( intLoop)
                If Instr( 1, Lcase( tpnm), "htmldocument", 1) <> 0 then
                    strResult = strResult & vbTab & tptitle _
                        & vbNewLine & vbTab & tpUrl _
                        '& vbNewLine & vbTab & tpUrlUnencoded
                    If Instr( 1, Lcase( tpUrl), Lcase( sUrl), 1) <> 0 Then
                        Set oObj = ww
                        iFound = 2
                        strResult = strResult & vbTab & "!match!"
                        ' looking for all matching MSIE URLs 
                        ' this may take considerable time amount
                        ' to speed up script running, uncomment next line "exit for"
                        ' exit for
                    Else
                    End If 
                End If
            Else
                ' a program reports the same shell.application property as "iexplore.exe"
                ' i.e. "explorer.exe"
                ' i.e. "HTML preview" in some editors
                ' etc.
            End If
        Next
    End With
    Set shApp = Nothing
    strResult = strResult & vbNewLine & Cstr( iFound)
    FindIE = iFound
End Function
VB脚本文档 ' http://stackoverflow.com/questions/22821984/looking-for-a-way-to-load-url-in-new-tab-and-change-the-title-once-done ' 选项显式 错误转到0 Dim strMyUrl:strMyUrl=”http://www.avg.com“'strMyUrl=”http://www.jysk.cz“'strMyUrl=”https://www.google.cz“'strMyUrl=“www.microsoft.com” Dim strWTitle:strWTitle=“yoyo” Dim strResult:strResult=WScript.ScriptName' Dim WshShell:Set WshShell=WScript.CreateObject(“WScript.Shell”) Dim IE:设置IE=无 Dim oIE:设置oIE=无 Dim intWExist、BrowserNavFlag、intButton、sRetVal intWExist=FindIE(strMyUrl,oIE)“查找MSIE窗口” 设置IE=oIE 选择Case intWExist 案例3 ''找到MSIE窗口,URL匹配,窗口标题匹配 ''(尚未实施) 案例2 ''找到MSIE窗口,URL匹配 案例1 ''找到MSIE窗口,没有URL匹配 ''BrowserNavFlag=65536'navOpenNewForegroundTab BrowserNavFlag=2048'navOpenInNewTab IE.Navigate2 strMyUrl,CLng(浏览器导航标志),“空白” 其他情况 未找到“”MSIE窗口 设置IE=CreateObject(“InternetExplorer.Application”) BrowserNavFlag=1 即,导航strMyUrl',CLng(浏览器导航标志) 结束选择 可见=真实 趁我忙 Wscript.Sleep 100 温德 而IE.Document.ReadyState“完成”或IE.ReadyState 4 Wscript.Sleep 100 温德 'intButton=WshShell.Popup(“观察MSIE标题如何更改”,1) 如果intWExist为1,则 intWExist=2 其他的 设置oIE=无 设置IE=无 strResult=strResult&vbNewLine&vbTab&“FindIE()过程#2” Wscript.Sleep 2000“Navigate2方法的附加时间” intWExist=FindIE(strMyUrl,oIE)'get right object for new created tab' 如果intWExist=2,则 设置IE=oIE 如果结束 如果结束 如果intWExist=2,则 IE.Document.Title=strWTitle sRetVal=“完成” 其他的 sRetVal=“'IE.Document.Title=strwttitle'-未重命名” 如果结束 设置IE=无 Wscript.Echo strResult&vbNewLine&sRetVal'传播结果 私有函数FindIE(ByVal sUrl、ByRef oObj) “参数 'sUrl(输入)字符串 'oObj(输出)对象 “返回 '0=未找到任何MSIE窗口-或找到但不可访问 '1=找到一个MSIE窗口 '2=1且地址行匹配 '3=2和标题匹配(尚未实现) Dim ww、tpnm、tptitle、tpfulln、tpUrl、tpUrl未编码 Dim errNo、errStr、intLoop、intLoopLimit 尺寸iFound:iFound=0 Dim shApp:Set shApp=CreateObject(“shell.application”) 用shApp 对于.windows中的每个ww tpfulln=ww.FullName strResult=strResult&vbNewLine&ww.Application&vbTab&tpfulln 如果Instr(1,Lcase(tpfulln),“iexplore.exe”,1)0,则 如果我发现>0,则 其他的 设置oObj=ww 如果结束 tptitle=“x x”:tpUrl=”“:tpurunencoded=“” intLoopLimit=100'以查找最大intLoopLimit/10秒的属性 intLoop=0 而intLoop
' VB Script Document
' http://stackoverflow.com/questions/22821984/looking-for-a-way-to-load-url-in-new-tab-and-change-the-title-once-done
'
option explicit
On Error Goto 0

Dim strMyUrl    : strMyUrl = "http://www.avg.com" 'strMyUrl = "http://www.jysk.cz" 'strMyUrl = "https://www.google.cz" 'strMyUrl = "www.microsoft.com"

Dim strWTitle   : strWTitle = "yoyo"

Dim strResult   : strResult = WScript.ScriptName ' 

Dim WshShell    : Set WshShell = WScript.CreateObject( "WScript.Shell")
Dim IE              : Set IE = Nothing
Dim oIE             : Set oIE = Nothing

Dim intWExist, BrowserNavFlag, intButton, sRetVal

intWExist = FindIE( strMyUrl, oIE) 'look for MSIE window'

    set IE = oIE

Select Case intWExist
Case 3
    ''' MSIE window found, URL match, window title match
    ''' (not implemented yet)
Case 2
    ''' MSIE window found, URL match
Case 1
    ''' MSIE window found, no URL match
    ''' BrowserNavFlag = 65536 ' navOpenNewForegroundTab
    BrowserNavFlag = 2048 ' navOpenInNewTab
    IE.Navigate2 strMyUrl, CLng( BrowserNavFlag), "_blank"
Case Else
    ''' MSIE window not found
    Set IE = CreateObject( "InternetExplorer.Application")
    BrowserNavFlag = 1
    IE.Navigate strMyUrl    ', CLng( BrowserNavFlag)
End Select

IE.Visible = True

While IE.Busy
    Wscript.Sleep 100
Wend
While IE.Document.ReadyState <> "complete" 'Or IE.ReadyState <> 4
    Wscript.Sleep 100
Wend
    'intButton = WshShell.Popup( "watch how MSIE title change", 1)
If intWExist <> 1 Then
    intWExist = 2
Else
    Set oIE = Nothing
    Set IE = Nothing
    strResult = strResult & vbNewLine & vbTab & "FindIE() pass # 2"
    Wscript.Sleep 2000 'additional time for the Navigate2 method'
    intWExist = FindIE( strMyUrl, oIE) 'get right object for newly created tab'
    If intWExist = 2 Then
        set IE = oIE
    End If
End If

If intWExist = 2 Then
    IE.Document.Title = strWTitle
    sRetVal = "done"
Else
    sRetVal = "'IE.Document.Title = strWTitle' - not renamed"
End If

Set IE = Nothing
Wscript.Echo strResult & vbNewLine & sRetVal ' propagate result

Private Function FindIE( ByVal sUrl, ByRef oObj)
' parameters
' sUrl (input)  string
' oObj (output) object
' returns 
' 0 = any MSIE window not found - or found but not accessible   
' 1 = a MSIE window found
' 2 = 1 and address line match
' 3 = 2 and title match (not implemented yet)
    Dim ww, tpnm, tptitle, tpfulln, tpUrl, tpUrlUnencoded
    Dim errNo, errStr, intLoop, intLoopLimit
    Dim iFound : iFound = 0
    Dim shApp    : Set shApp = CreateObject( "shell.application")
    With shApp
        For Each ww In .windows
            tpfulln = ww.FullName
            strResult = strResult & vbNewLine & ww.Application & vbTab & tpfulln
            If Instr( 1, Lcase( tpfulln), "iexplore.exe", 1) <> 0 Then
                If iFound > 0 Then
                Else
                    Set oObj = ww
                End If
                tptitle = "x x x" : tpUrl = "" : tpUrlUnencoded = ""
                intLoopLimit = 100 ' to look for attributes max. intLoopLimit/10 seconds
                intLoop = 0
                While intLoop < intLoopLimit
                    intLoop = intLoop + 1
                    On Error Resume Next
                    tpnm = typename( ww.document)
                    errNo = Err.Number
                    If errNo <> 0 Then
                        'error if  page not response (yet)' 
                        errStr = "Error # " & CStr( errNo) & " " & Err.Description
                        Wscript.Sleep 100
                    Else
                        iFound = 1
                        intLoopLimit = intLoop  ' end While..Wend loop and preserve loop counter
                        tptitle = ww.document.title
                        tpUrl = ww.document.URL
                        tpUrlUnencoded = ww.document.URLUnencoded
                        errStr = tpnm
                    End If
                    On Error Goto 0
                Wend
                strResult = strResult & vbTab & errStr & " " & CStr( intLoop)
                If Instr( 1, Lcase( tpnm), "htmldocument", 1) <> 0 then
                    strResult = strResult & vbTab & tptitle _
                        & vbNewLine & vbTab & tpUrl _
                        '& vbNewLine & vbTab & tpUrlUnencoded
                    If Instr( 1, Lcase( tpUrl), Lcase( sUrl), 1) <> 0 Then
                        Set oObj = ww
                        iFound = 2
                        strResult = strResult & vbTab & "!match!"
                        ' looking for all matching MSIE URLs 
                        ' this may take considerable time amount
                        ' to speed up script running, uncomment next line "exit for"
                        ' exit for
                    Else
                    End If 
                End If
            Else
                ' a program reports the same shell.application property as "iexplore.exe"
                ' i.e. "explorer.exe"
                ' i.e. "HTML preview" in some editors
                ' etc.
            End If
        Next
    End With
    Set shApp = Nothing
    strResult = strResult & vbNewLine & Cstr( iFound)
    FindIE = iFound
End Function