Deklaration: Declare Function EnumChildWindows Lib "user32.dll" ( _ ByVal hWndParent As Long, _ ByVal lpEnumFunc As Long, _ ByVal lParam As Long) As Long
Parameter:
Rückgabewert: Beispiel: ' Schreiben Sie den nachfolgenden Code in ein öffentliches Modul Private Declare Function EnumWindows Lib "user32.dll" ( _ ByVal lpEnumFunc As Long, _ ByVal lParam As Long) As Long Private Declare Function EnumThreadWindows Lib "user32.dll" ( _ ByVal dwThreadId As Long, _ ByVal lpfn As Long, _ ByVal lParam As Long) As Long Private Declare Function EnumChildWindows Lib "user32.dll" ( _ ByVal hWndParent As Long, _ ByVal lpEnumFunc As Long, _ ByVal lParam As Long) As Long Private Declare Function GetWindowThreadProcessId Lib "user32.dll" ( _ ByVal hwnd As Long, _ lpdwProcessId As Long) As Long Private Declare Function GetWindowTextLength Lib "user32.dll" _ Alias "GetWindowTextLengthA" ( _ ByVal hwnd As Long) As Long Private Declare Function GetWindowText Lib "user32.dll" _ Alias "GetWindowTextA" ( _ ByVal hwnd As Long, _ ByVal lpString As String, _ ByVal nMaxCount As Long) As Long Private Declare Function GetClassName Lib "user32.dll" _ Alias "GetClassNameA" ( _ ByVal hwnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Public Enum WindowEnum HAUPTFENSTER = 0 THREADFENSTER = 1 KINDFENSTER = 2 End Enum ' Ereignis der Enum-Funktion landet hier Public Function EnumProc(ByVal hwnd As Long, ByVal lParam As Long) As Long Dim Retval As Long, WindowText As String, WindowClass As String On Error GoTo ToLargeWindowText ' Fenstertext ermitteln WindowText = Space(GetWindowTextLength(hwnd) + 1) Retval = GetWindowText(hwnd, WindowText, Len(WindowText)) WindowText = Left$(WindowText, Retval) ' Fensterklasse ermitteln WindowClass = Space(256) Retval = GetClassName(hwnd, WindowClass, Len(WindowClass)) WindowClass = Left$(WindowClass, Retval) ' ermittelte Daten der entsprechenden Listbox hinzufügen With Form1.List1(lParam) .AddItem CStr(hwnd) & " # " & WindowClass & " # " & WindowText .ItemData(.NewIndex) = hwnd End With ' Wert für die weitere Enumerierung zurückgeben EnumProc = 1 Exit Function ' Wenn der Fenstertext länger als der maximal verfügbare Puffer ist WindowText = Space(256) Resume Next End Function ' Starten der ausgewählten Enumeration Public Function EnumAllWindows(ByVal WindowType As WindowEnum, Optional _ ParentWindow As Long = 0&) Dim ThreadID As Long, ProcessID As Long Select Case WindowType Case HAUPTFENSTER ' Hauptfenster enumerieren EnumWindows AddressOf EnumProc, WindowType Case THREADFENSTER ' Threadfenster enumerieren If ParentWindow = 0 Then Exit Function ' Thread-ID ermitteln und Enumeration starten ThreadID = GetWindowThreadProcessId(ParentWindow, ProcessID) EnumThreadWindows ThreadID, AddressOf EnumProc, WindowType Case KINDFENSTER ' Kindfenster enumerieren If ParentWindow = 0 Then Exit Function EnumChildWindows ParentWindow, AddressOf EnumProc, WindowType End Select End Function ' Schreiben Sie den nachfolgenden Code in ein Fenster das 3 Listboxen ' (List1 mit Index 0-2) hat Private Declare Function IsWindowEnabled Lib "user32.dll" (ByVal hwnd As Long) As Long Private Declare Function EnableWindow Lib "user32.dll" ( _ ByVal hwnd As Long, _ ByVal fEnable As Long) As Long ' Starten der Enumeration und Übertragen aller gefundenen Fenster in die Listbox Private Sub Form_Load() List1(0).Clear EnumAllWindows HAUPTFENSTER List1(0).ListIndex = 0 End Sub ' Beim Wählen eines Fensters Kind- und Thread-Fenster enumerieren Private Sub List1_Click(Index As Integer) Select Case Index Case 0 List1(1).Clear List1(2).Clear EnumAllWindows THREADFENSTER, List1(0).ItemData(List1(0).ListIndex) EnumAllWindows KINDFENSTER, List1(0).ItemData(List1(0).ListIndex) End Select End Sub ' Beim Doppelklick Fenster disablen wenn es enabled ist oder umgekehrt Private Sub List1_DblClick(Index As Integer) If IsWindowEnabled(List1(Index).ItemData(List1(Index).ListIndex)) = 0 Then EnableWindow List1(Index).ItemData(List1(Index).ListIndex), 1 Else EnableWindow List1(Index).ItemData(List1(Index).ListIndex), 0 End If End Sub Diese Seite wurde bereits 18.050 mal aufgerufen. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |