简单的FindWindow和FindWindowEx是不能获取的。qq的窗体是自行绘制的。

解决方案 »

  1.   


    Option Explicit
    Private Const WM_CHAR = &H102
    Private Const WM_LBUTTONDOWN = &H201
    Private Const WM_LBUTTONUP = &H202Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function GetFocus Lib "user32" () As Long
    '在TM2009、QQ2011下通过
    Private Sub Command1_Click()
        Dim lngP As Long
        Dim lngTextHwnd As Long
        Dim lngEnterHwnd As Long
        '窗体句柄,经过试验也就是输入文本框的句柄,和SPY++的结果完全相符
        lngTextHwnd = FindWindow("TXGuiFoundation", "qq名称")
        
        
        Call subPostString(lngTextHwnd, "ABC")    '将字符串发送给输入文本框
        
    End Sub
    '将一个字符串通过PostMessage传送出去
    Private Sub subPostString(ByVal lngHandle As Long, ByVal strP As String)
        Dim intP As Integer
        Dim intK As Integer
        Dim lngAsc As Long
        Dim lngP As Long
        Dim strT As String
    On Error GoTo errSub
        For intP = 0 To Len(strP) - 1
            strT = Mid(strP, intP + 1, 1)
            If Asc(strT) <= 0 Then
                lngAsc = AscW(StrConv(strT, 128))
                If lngAsc < 0 Then
                    lngAsc = lngAsc + 65536 '2^16
                End If
            Else
                lngAsc = Asc(strT)
            End If
            lngP = PostMessage(lngHandle, WM_CHAR, lngAsc, 0)
        Next intP
        Exit Sub
    errSub:End Sub
    这个代码可以把要发送的字符发送到qq消息文本框
      

  2.   

    我使用SPY++来查阅它的窗口Caption的,你试试用SPY++看看?
      

  3.   

    花了一些时间,终于把QQ2013 SP6版本的聊天记录搞定了,几经周折,来的不容易,总体来说还是比较满意的,对这个方案作一下总结:1.采用技术方案为hook方式,非不可靠的硬编码、非不负责任的读内存方式。
    2.考虑便于维护的技术方案,不会随qq变更而需要大作改动,类似以前版本的SaveMsg方案。3.支持后台聊天记录即不打开聊天窗口即可记录聊天记录。4.支持图片、表情、文件传输记录,可以显示为与消息管理器同样效果,即与你在QQ历史聊天记录里看到的是一样的效果(图文并茂)。
    5.兼容32位64位。
    6.商业代码,与技术代码有本质的区别,有经验的同行应该都了解,从技术到产品是有一段很长的距离的,我的代码一个dll一个api,封装完善,调用一下即可,完全傻瓜化。
    7.稳定的框架和技术沉淀,代码从08年到现在已经经过了5年的沉淀。
    8.支持注入方式和劫持方式两种方案。9.带有调试工具,Debug版本调试,Release版本自动隐藏调试,不必借用其它第三方插件或者工具来作二次开发,非常方便。10.兼容所有之前版本,支持2008~2013最新版所有版本,支持MSN。
      

  4.   


    花了一些时间,终于把QQ2013正式版beta1 7979版本的聊天记录搞定了,几经周折,来的不容易,总体来说还是比较满意的,对这个方案作一下总结:1.采用技术方案为hook方式,非不可靠的硬编码、非不负责任的读内存方式。
    2.考虑便于维护的技术方案,不会随qq变更而需要大作改动,类似以前版本的SaveMsg方案。3.支持后台聊天记录即不打开聊天窗口即可记录聊天记录。4.支持图片、表情、文件传输记录,可以显示为与消息管理器同样效果,即与你在QQ历史聊天记录里看到的是一样的效果(图文并茂)。
    5.兼容32位64位。
    6.商业代码,与技术代码有本质的区别,有经验的同行应该都了解,从技术到产品是有一段很长的距离的,我的代码一个dll一个api,封装完善,调用一下即可,完全傻瓜化。
    7.稳定的框架和技术沉淀,代码从08年到现在已经经过了5年的沉淀。
    8.支持注入方式和劫持方式两种方案。9.带有调试工具,Debug版本调试,Release版本自动隐藏调试,不必借用其它第三方插件或者工具来作二次开发,非常方便。10.兼容所有之前版本,支持2008~2013最新版所有版本,支持MSN。
    http://blog.csdn.net/nengx/article/details/11299533QQ627660966 以上所有楼层的技术我这里都有demo和源码,并且都封装为DLL供傻瓜化调用。