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.125 mal aufgerufen. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Buchempfehlung Tipp des Monats Juni 2024 Microsys Kramer Mausrad im Formular abschalten (Access) Deaktiviert das Mausrad in Access-Formularen. Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. |
||||||||||||||||
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. |