Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB5,VB6
Expertise: Intermediate
May 26, 2001



Building the Right Environment to Support AI, Machine Learning and Deep Learning

ChildWindows - Get all the child windows of another window

Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, _
    ByVal lParam As Long) As Long
Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As _
    Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

' The following variables are shared between the main ChildWindows procedure
' and the auxiliary (private) ChildWindows_CBK routine

' An array of Long holding the handle of all child windows.
Dim windows() As Long
' The number of elements in the array.
Dim windowsCount As Long

' Return an array of Long holding the handles of all the child windows
' of a given window. If hWnd = 0 it returns all the top-level windows.

Function ChildWindows(ByVal hWnd As Long) As Long()
    windowsCount = 0
    If hWnd Then
        EnumChildWindows hWnd, AddressOf EnumWindows_CBK, 1
        EnumWindows AddressOf EnumWindows_CBK, 1
    End If
    ' Trim uninitialized elements and return to caller.
    ReDim Preserve windows(windowsCount) As Long
    ChildWindows = windows()
End Function

' The callback routine, common to both EnumWindows and EnumChildWindows.

Private Function EnumWindows_CBK(ByVal hWnd As Long, ByVal lParam As Long) As _
    ' Make room in the array, if necessary.
    If windowsCount = 0 Then
        ReDim windows(100) As Long
    ElseIf windowsCount >= UBound(windows) Then
        ReDim Preserve windows(windowsCount + 100) As Long
    End If
    ' Store the new item.
    windowsCount = windowsCount + 1
    windows(windowsCount) = hWnd
    ' Return 1 to continue enumeration.
    EnumWindows_CBK = 1
End Function
Francesco Balena
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date