devxlogo

ChildWindows – Get all the child windows of another window

ChildWindows – Get all the child windows of another window

Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, _    ByVal lParam As Long) As LongPrivate 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    Else        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 _    Long    ' 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 = 1End Function

devx-admin

Share the Post: