Internetexplorer - bestimmte Fenster schliessen - API...

Frage: Gestern haben wir versucht mittels "Shell" bestimmte Internetexplorerfenster zu beenden. Falls das - aus welchem Grund auch immer - nicht funktioniert, hier eine Möglichkeit per "API". Die Sub "Main_1" dient nur dazu den Internetexplorer mit bestimmten Seiten mehrmals zu starten.

Yesterday we tried using "shell" to terminate certain Internet Explorer window. If - for whatever reason - does not work, here's a way by "API". The Sub "Main_1" serves only to Internet Explorer with certain pages to start several times.

Hier noch eine Beispieldatei / Here's a sample file:
Internetexplorer - bestimmte Fenster schliessen - API...[XLS 50 KB]

Option Explicit
' Quelle: http://support.microsoft.com/kb/147659/en-us/
Private Declare Function GetParent Lib "user32" _
    (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32" _
    Alias "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" _
    Alias "PostMessageA" (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
    Alias "GetWindowTextA" (ByVal hwnd As Long, _
    ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, _
    ByVal wCmd As Long) As Long
Const GW_HWNDNEXT = 2
Const WM_CLOSE = &H10
' Das ist ein Teil der Caption des Internetexplorerfensters - anpassen!!!!
Const strSearch As String = "pur... - Windows Internet Explorer"
'--------------------------------------------------------------------------
' Module    : Module1
' Procedure : Main
' Author    : Case (Ralf Stolzenburg)
' Date      : 16.04.2013
' Purpose   : API - Bestimmtes Internetexplorer Fenster schliessen...
'--------------------------------------------------------------------------
Public Sub Main()
    Dim lngReturnValue As Long
    Dim strTMP As String * 256
    Dim lngHwnd As Long
    On Error GoTo Fin
    lngHwnd = FindWindow(vbNullString, vbNullString)
    Do While Not lngHwnd = 0
        If GetParent(lngHwnd) = 0 Then
            GetWindowText lngHwnd, strTMP, 256
            If InStr(strTMP, strSearch) > 0 Then
                lngReturnValue = PostMessage(lngHwnd, WM_CLOSE, 0&, 0&)
            End If
        End If
        lngHwnd = GetWindow(lngHwnd, GW_HWNDNEXT)
    Loop
Fin:
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub
Public Sub Main_1()
    ' NUR zum testen. Der IE wird viermal aufgerufen
    ' Dreimal mit meiner Blogseite und einmal mit einem Excelforum
    On Error GoTo Fin
    Call IE_Run("http://vbanet.blogspot.de/")
    Call IE_Run("http://vbanet.blogspot.de/")
    Call IE_Run("http://vbanet.blogspot.de/")
    Call IE_Run("http://www.herber.de/forum/")
Fin:
    If Err.Number <> 0 Then MsgBox "Error: " & _
        Err.Number & " " & Err.Description
End Sub
'--------------------------------------------------------------------------
' Module    : Module1
' Procedure : IE_Run
' Author    : Case (Ralf Stolzenburg)
' Date      : 16.04.2013
' Purpose   : Internetexplorer mit bestimmten Seiten starten...
'--------------------------------------------------------------------------
Private Sub IE_Run(ByVal strAddress As String)
    Dim objIEApp As Object
    Set objIEApp = CreateObject("InternetExplorer.Application")
    With objIEApp
        .Navigate strAddress
        Do: Loop Until .Busy = False
        Do: Loop Until .Busy = False
        .Visible = True
    End With
    Set objIEApp = Nothing
End Sub

Beliebte Posts aus diesem Blog

Formeln - auch Array - per VBA eintragen...

Alle Dateien eines Ordners - Optional mit Unterordner

Excel -> Word in Textmarken (Bookmarks)...