Heute stellen wir Ihnen die EnumChildWindows API-Funktion vor, mit der sich schnell alle Child-Windows eines bestimmten Parent-Windows ermitteln lassen. Hinweis: Fügen Sie nachfolgenden Code in ein Modul ein: Option Explicit ' benötigte API-Deklarationen Public Declare Function EnumChildWindows Lib "user32.dll" ( _ ByVal hWndParent As Long, _ ByVal lpEnumFunc As Long, _ ByVal lParam 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 ' Diese Prozedur wird für jedes Child-Window aufgerufen Public Function EnumProc(ByVal hwnd As Long, ByVal lParam As Long) As Long Dim Retval As Long Dim WindowText As String Dim WindowClass As String On Error GoTo ErrHandler ' 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) ' Fenstertext und -klasse in der ListBox anzeigen With Form1.List1 .AddItem CStr(hwnd) & " # " & WindowClass & " # " & WindowText End With ' nächstes Child-Window ermitteln EnumProc = 1 Exit Function ErrHandler: WindowText = Space$(256) Resume Next End Function Platzieren Sie nun auf der Form (Form1) ein ListBox-Control (List1) und fügen nachfolgenden Code in das Form_Load Event ein: Private Sub Form_Load() ' alle Child-Windows ermitteln und in der ' ListBox anzeigen EnumChildWindows Me.hwnd, AddressOf EnumProc, 0 End Sub Beim Starten des Projekts werden jetzt alle Child-Windows (in unserem Fall nur die ListBox) in der Liste angezeigt. Dieser Tipp wurde bereits 14.641 mal aufgerufen.
Anzeige
![]() ![]() ![]() (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
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. Tipp des Monats ![]() Dieter Otter Druckposition in mm festlegen Mit einer kleinen Umrechnungsfunktion lässt sich die Druckposition auch in mm bestimmten. 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. |