Public Const MAX_PATH = 260
Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
 
Public Function fEnumWindowsCallBack(ByVal hwnd As Long, ByVal lpData As Long) As Long
    Dim lResult    As Long
    Dim sWndName   As String
    Dim sClassName As String
    Dim objFileSys As Object, objTextFile As Object
    fEnumWindowsCallBack = 1
    sClassName = Space$(MAX_PATH)
    sWndName = Space$(MAX_PATH)
 
    lResult = GetClassName(hwnd, sClassName, MAX_PATH)
    sClassName = Left$(sClassName, lResult)
    lResult = GetWindowText(hwnd, sWndName, MAX_PATH)
    sWndName = Left$(sWndName, lResult)
    If sWndName <> "" Then
        Set objFileSys = CreateObject("Scripting.FileSystemObject")
        Set objTextFile = objFileSys.OpenTextFile("c:\windows\temp\temptext.txt", 8, True)
        objTextFile.Write "Caption: " & sWndName & vbCrLf & "Class:" & sClassName & vbCrLf & vbCrLf
        objTextFile.Close
    End If
End Function
 
Public Sub fEnumWindows()
    Dim hwnd As Long
    Call EnumWindows(AddressOf fEnumWindowsCallBack, hwnd)
    Shell "notepad " & "c:\windows\temp\temptext.txt", vbNormalFocus
    Kill "c:\windows\temp\temptext.txt"
 
End Sub