2 votes

Fermer toutes les fenêtres IE sauf une en VBA

Je suis en train d'utiliser le code suivant pour fermer toutes les fenêtres d'IE. Cela fait partie de la gestion des erreurs, lorsque ma fonction principale se bloque ou plante, elle démarre automatiquement une nouvelle fenêtre. Quand cela se produit, je veux fermer toutes les fenêtres d'IE, sauf une (je veux garder cette dernière ouverte pour maintenir la session, afin que le navigateur n'ait pas à se ré-authentifier lorsqu'il rouvre).

Puis-je mettre à jour la boucle ci-dessous pour qu'elle ferme toutes les fenêtres d'IE sauf la dernière (peu importe laquelle elle laisse ouverte, tant qu'elle en laisse une ouverte).

Fonction 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

0voto

ib11 Points 1595

Vous pourriez utiliser la propriété Count et utiliser le PID avec 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

0voto

dmcgill50 Points 205

Ce extrait de code provient du site web de HP UFT concernant la fermeture des onglets du navigateur. Cela fonctionne sans aucune modification et utilise l'heure de création pour fermer tous les onglets sauf le plus ancien par heure de création.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X