簡體   English   中英

關閉除VBA中的1個窗口外的所有IE窗口

[英]Close all IE windows except 1 in VBA

我正在使用以下代碼關閉所有IE窗口。 這是錯誤處理的一部分,當我較大的函數掛起或崩潰時,它將自動啟動新窗口。 發生這種情況時,我想關閉所有IE窗口,除了1個(我想保持最后一個打開以維護會話,因此瀏覽器在再次打開時不必重新進行身份驗證)。

我是否可以更新下面的循環,以使其關閉除最后一個窗口以外的所有IE窗口(保留打開哪個特定窗口都沒有關系,只需要打開一個窗口即可)。

Function closeallIE()
        Dim objWMI As Object, objProcess As Object, objProcesses As Object
        Set objWMI = GetObject("winmgmts://.")
        Set objProcesses = objWMI.ExecQuery( _
            "SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
        For Each objProcess In objProcesses
            Call objProcess.Terminate
        Next
        Set objProcesses = Nothing: Set objWMI = Nothing
        Debug.Print wait(3)
    End Function

您可以使用Count屬性,並將PID與Taskkill一起使用:

Sub closeallIE()
    Dim objWMI As Object, objProcess As Object, objProcesses As Object
    Set objWMI = GetObject("winmgmts://.")
    Set objProcesses = objWMI.ExecQuery( _
        "SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'")
    Dim j As Integer
    j = objProcesses.Count
    For Each objProcess In objProcesses
        If j > 1 Then Shell "taskkill /f /PID " & CStr(objProcess.ProcessID), vbHide

        j = j - 1
    Next
    Set objProcesses = Nothing
    Set objWMI = Nothing

End Sub

該代碼段摘自HP UFT網站,有關關閉瀏覽器選項卡 這可以進行任何調整,並使用創建時間關閉所有選項卡,但最舊的選項卡除外(按創建時間)。

On error resume next

Set oDesc = Description.Create
oDesc( "micclass" ).Value = "Browser"

oDesc( "application version" ).Value = browserPropertyApplicationVersion

Set vIE= Desktop.ChildObjects(oDesc)
vIECount=vIE.count

z=vIECount
For m=1To vIECount - 1
z=z-1
    If Browser("creationtime:="&z).Exist(0) Then

            Browser("creationtime:=1").Close

    End If


If err.number > 0 Then
message = message & " @@@@@@@Error shown by application is :  " & err.description
icon_flag=0
End If
Next

Set oDesc = Nothing
Set vIE=Nothing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM