现在仅仅已知QQ聊天窗口的句柄,如果用常规的getwindowtext等函数将不能获得这里面的聊天文本。
于是考虑手动复制粘贴模拟。
手动操作如下:
先在窗口中点击鼠标左键一次。另其获得焦点,然后使用ctrl+a全选,接下来使用ctrl+c复制。于是在剪贴版中就获得了文本的内容。
请教如何用代码实现上述手动操作。
另外还要多一个步骤,就是把剪贴版中的内容存放入一个变量。并将全选时,屏幕全蓝的效果通过再次模拟一次鼠标左键取消。注意:仅仅已知QQ聊天窗口的句柄。请教如何实现,谢谢!

解决方案 »

  1.   

    我觉得不应该模拟手动的方式才对,应该还是API获得文本,
    关注
      

  2.   

    这些窗口用api是无法或者必须通过特殊工具(如spy++)也无法获得的,因为qq对其作了专业技术处理。频蔽了消息。所以我只想问如上手动实现的方法。
      

  3.   

    应该用gettext获取文本,你之所以获取不了,是因为你查找的QQ句柄是错误的,QQ的文本框是在子窗口下。
      

  4.   

    手动这些功能可以实现么。我主要是想知道手动这些功能如何实现。不要使用诸如gettext之类的函数
      

  5.   

    Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Const MOUSEEVENTF_LEFTDOWN = &H2
    Const MOUSEEVENTF_LEFTUP = &H4Private Sub Form_Load()
    mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
    End Sub
      

  6.   

    Private Declare Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Const VK_CONTROL = &H11
    Const VK_A = 65Private Sub Form_Load()
    SetFocus 你得到的句柄
    keybd_event VK_CONTROL, 0, 0, 0
    keybd_event VK_A, 0, 0, 0
    keybd_event VK_A, 0, KEYEVENTF_KEYUP, 0
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
    End Sub