Autor: Peter Haserodt  --- Aus Excel VBA - Gruppe: Verschiedenes

Fenster und ihre Informationen (API)

Autor: Peter Haserodt - Erstellt: --      - Letzte Revision: --
Fenster und Informationen.

Immer mehr greifen auf Api's zu.
Manchmal ist es gewünscht, alle Fenster aufzulisten und Informationen zu erhalten.
Nachfolgendes Modul listet alle Hauptfenster (Mit Titel) und deren Handle sowie Titel und Klassenname.

Kopieren Sie das Modul in eine leere Arbeitsmappe.

' ********************************************************
' Modul: mdlFenster Typ: Allgemeines Modul
' ********************************************************

Option Explicit
' Erst ab Excel 2000

Private Declare Function EnumWindows _
    Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean
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 GetWindowTextLength _
    Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetClassName Lib _
    "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, _
    ByVal nMaxCount As Long) As Long

Dim iRowCount As Long

Public Sub StartFenster()
    iRowCount = 0
    ThisWorkbook.Worksheets(1).UsedRange.ClearContents
    EnumWindows AddressOf FensterCallBack, ByVal 0&
End Sub


Private Function FensterCallBack(ByVal DasHwnd As Long, ByVal lParam As Long) As Boolean
    Dim sTemp As String, retVal As Long, sClassTemp As String * 100
    retVal = GetWindowTextLength(DasHwnd)
    sTemp = Space(retVal)
    GetWindowText DasHwnd, sTemp, retVal + 1
    'Ausgabe in erstes Worksheet, Fauler ZeilenZähler
    If retVal <> 0 Then ' Nur Fenster mit Titeln ausgeben
        iRowCount = iRowCount + 1
        GetClassName DasHwnd, sClassTemp, 100
        With ThisWorkbook.Worksheets(1)
            .Cells(iRowCount, 1) = DasHwnd ' Handle des Fensters
            .Cells(iRowCount, 2) = sTemp ' Titel
            .Cells(iRowCount, 3) = Trim(sClassTemp) ' Klassenname
        End With
        
    End If
    FensterCallBack = True
    
End Function

Weitere Artikel der Gruppe: Verschiedenes Aus Excel VBA
Nach oben