Dim oCtl as control
on error resume next
for each oCtl in me.controls
debug.print octl.hwnd
next

解决方案 »

  1.   

    Enumwindow和EnumChildWindow两个联合搞定
      

  2.   

    一个查找指定HWND 窗口中所有控件的函数,极棒(个人瞎吹 :-D)Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As LongPrivate Const WM_GETTEXT = &HD
    Private Const WM_GETTEXTLENGTH = &HE''hParent 要进行查找的窗口 HWND
    Public Sub FindOneWindowClild(ByVal hParent As Long)
    Dim hwnForm As Long
    Dim strc    As String * 255
    Dim strURL  As String
    Dim strlen  As Long
        strlen = SendMessage(hParent, WM_GETTEXTLENGTH, 0&, 0&)
        If strlen Then
            Call SendMessage(hParent, WM_GETTEXT, strlen + 1, ByVal strc)
        End If
        ''加入到列表,用以显示标题
        List1.AddItem strc
        'Debug.Print Trim(strc)
        strc = ""
        strc = vbNullString
        Call GetClassName(hParent, strc, 255)
        ''加入到列表,用以显示窗体的注册类
        List1.AddItem strc
        'Debug.Print Trim(strc)
        Do
            hwnForm = FindWindowEx(hParent, hwnForm, vbNullString, vbNullString)
            If hwnForm <> 0 Then
                Call FindOneWindowClild(hwnForm)
            End If
        Loop Until hwnForm = 0
    End Sub
      

  3.   

    GetWindow VB声明 
    Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long 
    说明 
    获得一个窗口的句柄,该窗口与某源窗口有特定的关系 
    返回值 
    Long,由wCmd决定的一个窗口的句柄。如没有找到相符窗口,或者遇到错误,则返回零值。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hwnd Long,源窗口 
    wCmd Long,指定结果窗口与源窗口的关系,它们建立在下述常数基础上: 
    GW_CHILD 寻找源窗口的第一个子窗口 
    GW_HWNDFIRST 为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口 
    GW_HWNDLAST 为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口 
    GW_HWNDNEXT 为源窗口寻找下一个兄弟窗口 
    GW_HWNDPREV 为源窗口寻找前一个兄弟窗口 
    GW_OWNER 寻找窗口的所有者 
    注解 
    兄弟或同级是指在整个分级结构中位于同一级别的窗口。如某个窗口有五个子窗口,那五个窗口就是兄弟窗口。尽管GetWindow可用于枚举窗口,但倘若要在枚举过程中重新定位、创建和清除窗口,那么EnumWindows和EnumChildWindows更为可靠