用鼠标钩子能监控到其他窗口的文本被选中吗?也就拖黑的那些字体。如果可以,应该怎么做?
初步想到的方法是鼠标左键弹起的时候,直接通过WM_COPY消息复制选中的内容在剪贴板,但是这样做首先需要保存剪贴板旧的内容,然后进行复制,复制后获取到新的内容,再把剪贴板的内容还原,频繁操作剪贴板不说,而且部分程序,包括IE在内,不支持WM_COPY或者Keybd_event进行复制。
请教大牛们还有什么方法可以获取到其他窗口选中的文本,就想有道那样,拖黑一段文本可以进行翻译

解决方案 »

  1.   

    获取其他窗口的Text只要调用 GetWindowText即可,根本不需要钩子。GetWindowText也是可以跨进程的,不需要进程之间通信。
      

  2.   

    GetWindowText得到的是一个窗口的标题吧?我要的是选中的文本,不如我拖黑浏览器上的某一段文字,我要得到那一段文字的内容
      

  3.   

    可以参考一下屏幕取词的做法,希望对你有所帮助http://kisin.blogbus.com/logs/34740567.html
    http://download.csdn.net/source/1223789
      

  4.   

    我要的是拖黑的那一段文本啊,不是鼠标位置的文本,这个的原理貌似就是使屏幕重绘,然后拦截ExTextOut的调用,再获取到鼠标所在位置的文本,不过这个代码也确实不错,值得研究一下,继续等高手
      

  5.   

    拦截鼠标左击事件,然后获取当前焦点控件hwnd,em_getsel获取选中文字,对于非edit控件,你可以spy看下触发什么消息,待得回去给你看下
      

  6.   

    好的,麻烦你了,spy我不怎么会用,主要还是不同的窗口获取的方法不一样,这才郁闷