我已经使用FindWindowEx等到其它窗体(不属于本应用程序)上的所有控件的hwnd,
怎样得到控件的类型呢?比如是文本框、下拉框还是其它什么什么框的?

解决方案 »

  1.   

    Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    这个函数根据句柄取得类名 ,你可以根据类名判断
      

  2.   

    你可以使用GetClassName 来获取窗口的类名,但是对于自定义的类,但你是很难判断是文本框还是下拉框的。因为类名是控件编写者任意取的,可以说是没有规律的。
      

  3.   

    Public  Function  GetClassNameStr(hWnd  As  Long)  As  String  
           Dim  TempLng  As  Long  
           Dim  TempStr  As  String  
           Dim  Rc  As  Long  
             
           TempLng  =  260  
           TempStr  =  Space(TempLng)  
             
           Rc  =  GetClassName(hWnd,  TempStr,  TempLng)  
             
           GetClassNameStr  =  StrConv(LeftB$(StrConv(TempStr,  vbFromUnicode),  Rc),  vbUnicode)  
             
    End  Function  
      

  4.   

    为什么我得到的控件类型都是 ThunderFormDC,
    但我想得到的是ComboBox、TextBox、CommandButton......?
      

  5.   

    vb的都是非标准Win32控件,决大多数带一个Thunder
      

  6.   

    如果是你自己的程序获得你自己的类型,直接用typename( )
      

  7.   

    ComboBox、TextBox、CommandButton是没有办法得到的!!!!!!是神仙你都得不到!·除非你做个处理:把得到的"ThunderCommandButton"变为"CommandButton",把得到的"ThunderTextBox"变为"TextBox"等等,但你能保证你能够知道所有的类吗?
      

  8.   

    是另外一个应用程序的窗体。
    我得到的都是 ThunderFormDC ,不管是TextBox、ComboBox还是ListBox返回的ClassName都是ThunderFormDC。
      

  9.   

    它没有返回ThunderCommandButton之类的东西啊!
      

  10.   

    ComboBox、TextBox、CommandButton是没有办法得到的!!!!!!
    ===============
    可以得到,他们的类名分别是ThunderComboBox,ThunderTextBox,ThunderCommandButton
      

  11.   

    谢谢大家,已经得到ThunderComboBox,ThunderTextBox,ThunderCommandButton之类的东西了。
        一个参数写错了,唉,程序员.....
        非常感谢每一个人。
        发奖了.......