就是说,如果我已经获得了另一个程序(不是窗体)的文本框控件的句柄,如果这个文本框不是灰色的,我用下面的代码可以
获得其内容,
Public Function GetText(WindowHandle As Long) As String
       Dim strBuffer As String, Char As String, lngTextLength As Long
       strBuffer = Space(255)
       '如果是edit控件则等待消息发送成功
       If InStr("Edit", FGetClassName(WindowHandle)) And Char <> "0" Then Sleep (10)
       '得到edit控件的text
       SendMessage WindowHandle, &HD, 255, ByVal strBuffer
        GetText = Trim(strBuffer)    
End Function
Public Function FGetClassName(hwnd As Long) As String
       Dim ClassName As String
       Dim Ret As Long
       '为类名设置缓存区大小
       ClassName = Space(256)
       '得到GETCLASSNAME返回值
       Ret = GetClassName(hwnd, ClassName, 256)
       FGetClassName = Left(ClassName, Ret)
End Function
上段代码可以获得不是灰色的文本框的内容,但是如果那个程序的文本框是灰色的,获取的就是空内容,但实际是有内容,
如何才能获取其内容呢?谢谢!!

解决方案 »

  1.   

    Public Function GetText(WindowHandle As Long) As String
      Dim strBuffer As String, Char As String, lngTextLength As Long
      strBuffer = Space(255)
      '如果是edit控件则等待消息发送成功
      If InStr("Edit", FGetClassName(WindowHandle)) And Char <> "0" Then Sleep (10)
      '得到edit控件的text
       
      
      '添加一个 EnabledWindow 的api 声明, 然后再添加两个 enabledwindow的 调用
      enabledwindow windowhandle,1
      SendMessage WindowHandle, &HD, 255, ByVal strBuffer
      enabledwindow windowhandle,0
      GetText = Trim(strBuffer)  
    End Function
    Public Function FGetClassName(hwnd As Long) As String
      Dim ClassName As String
      Dim Ret As Long
      '为类名设置缓存区大小
      ClassName = Space(256)
      '得到GETCLASSNAME返回值
      Ret = GetClassName(hwnd, ClassName, 256)
      FGetClassName = Left(ClassName, Ret)
    End Function 如果不行, 那就得想别的办法了
      

  2.   

    不好意思,浪费大家的时间,是我自己没有搞清楚,没有把问题说清楚,现在问题已经解决了,我要获取的人家根本就不是edit的类,而是Static,PctGL的答复可能会有用,总之谢谢大家的回复。