函数:
   Public Function GetText(Win_hwnd As Long) As String
  Dim WinTxtLen As Long
  Dim WinTxt As String
  WinTxtLen = SendMessage(Win_hwnd, WM_GETTEXTLENGTH, 0, 0)
  WinTxtLen = WinTxtLen + 1
  WinTxt = Space$(WinTxtLen)
  WinTxtLen = SendMessage(Win_hwnd, WM_GETTEXT, WinTxtLen, ByVal WinTxt)
  GetText = Left$(WinTxt, WinTxtLen)
End Function
   此函数在win2000下,sendmessage函数不能够象win98一样的正常运行,既:不能够返回正确的值。总是返回空。请问是为什么????高手哥哥,给点指教哦。。
        无论晴天也好雨天也好,我希望和你一起度过风笛~~~

解决方案 »

  1.   

    我在win2000P下帮你测试了一下,没问题
    模块代码如下:
    Option Explicit
    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 Const WM_GETTEXTLENGTH = &HE
    Public Const WM_GETTEXT = &HDPublic Function GetText(Win_hwnd As Long) As String
        Dim WinTxtLen As Long
        Dim WinTxt As String
        WinTxtLen = SendMessage(Win_hwnd, WM_GETTEXTLENGTH, 0, 0)
        WinTxtLen = WinTxtLen + 1
        WinTxt = Space$(WinTxtLen)
        WinTxtLen = SendMessage(Win_hwnd, WM_GETTEXT, WinTxtLen, ByVal WinTxt)
        GetText = Left$(WinTxt, WinTxtLen)
    End Function
    然后测试了
        MsgBox GetText(Text1.hwnd)    
        MsgBox GetText(Me.hwnd)
      

  2.   

    不能 WM_GETTEXT 直接获取密码框的密码,除非在同一个进程里
      

  3.   

    http://www.csdn.net/Develop/Read_Article.asp?Id=16452
      

  4.   

    上面的是用vc++编的啊,我不知道怎么翻译成vb,哪位高手哥哥可以帮我翻译一下其中将dll插入到别的进程中的那一部分啊也就是如何才能象98中一样得到密码框中的内容谢谢啊~~~~~~~