我想获得别人发给我的 信使服务 弹出框的内容,(就是 在2003-12-28 16:23:22 从XXX到123.123.234.234 的消息 DDDDDDDD  这一串)。
我用Handle = FindWindow("#32770", "信使服务")取出来的handle总是0。请问为什么?
可是再往后边:Handle = FindWindowEx(Handle, 0&, "Static", vbNullString)却可以取到一个值。又是为什么??然后 GetWindowText Handle, MyStr, 100      以后,mystr的值为空请问如何做到如题要求,非常感谢!!!

解决方案 »

  1.   

    你的得到不是信使服务窗口句柄,是桌面窗口的顶级子窗口句柄,
    要实现你的思路,可以用一下代码
    in module:
    Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    Public Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
        Dim sSave As String, Ret As Long
        Ret = GetWindowTextLength(hwnd)
        sSave = Space(Ret)
        GetWindowText hwnd, sSave, Ret + 1
        If Trim(sSave) = "信使服务" Then
           Form1.Print Str$(hwnd) + " " + sSave
        End If
        EnumWindowsProc = True
    End Function
    in form:Private Sub Command1_Click()
        Me.AutoRedraw = True
        EnumWindows AddressOf EnumWindowsProc, ByVal 0&
    End Sub
    通过得到枚举进程来获取