我在用sendmessage WM_GETTEXT这个api的时候,WM_GETTEXT命令要求传的参数一个是长度,一个是buff的地址,我是这样写的dim x as string * 255sendmessage hwnd , WM_GETTEXT, 255, x但是这样是类型不匹配的(x是string不是long型地址)请问应该怎么写才能让这个语句正确呢?

解决方案 »

  1.   

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const WM_GETTEXT = &HD
    Private Const WM_GETTEXTLENGTH = &HEdim strlen as integer
    dim strc   as string    strlen = SendMessage(hwnd, WM_GETTEXTLENGTH, 0&, 0&)
        strc = Space(strlen + 1)
        If strlen Then
            Call SendMessage(hwnd, WM_GETTEXT, strlen + 1, ByVal strc)
        End If
      

  2.   

    还是不行,类型不匹配我是这样写的
    Dim buf As String
    Dim strlen As Integerstrlen = SendMessage(hwnd, WM_GETTEXTLENGTH, 0&, 0&)buf = Space(strlen + 1)Call sendMessage(hwnd, WM_GETTEXT, strlen + 1, ByVal buf)
    还是显示byval buf类型不匹配
      

  3.   

    哦,现在行了,但是请问为什么我用postmessage就说我类型不匹配呢?