我想获得别人发给我的 信使服务 弹出框的内容,(就是 在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的值为空请问如何做到如题要求,非常感谢!!!
我用Handle = FindWindow("#32770", "信使服务")取出来的handle总是0。请问为什么?
可是再往后边:Handle = FindWindowEx(Handle, 0&, "Static", vbNullString)却可以取到一个值。又是为什么??然后 GetWindowText Handle, MyStr, 100 以后,mystr的值为空请问如何做到如题要求,非常感谢!!!
要实现你的思路,可以用一下代码
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
通过得到枚举进程来获取