如何通过全局鼠标钩子获取其他窗口选中文本内容

奋斗吧 2011-05-16 09:16:58
用鼠标钩子能监控到其他窗口的文本被选中吗?也就拖黑的那些字体。如果可以,应该怎么做?
初步想到的方法是鼠标左键弹起的时候,直接通过WM_COPY消息复制选中的内容在剪贴板,但是这样做首先需要保存剪贴板旧的内容,然后进行复制,复制后获取到新的内容,再把剪贴板的内容还原,频繁操作剪贴板不说,而且部分程序,包括IE在内,不支持WM_COPY或者Keybd_event进行复制。
请教大牛们还有什么方法可以获取到其他窗口选中的文本,就想有道那样,拖黑一段文本可以进行翻译
...全文
655 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
奋斗吧 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xuddk727 的回复:]

拦截鼠标左击事件,然后获取当前焦点控件hwnd,em_getsel获取选中文字,对于非edit控件,你可以spy看下触发什么消息,待得回去给你看下
[/Quote]
好的,麻烦你了,spy我不怎么会用,主要还是不同的窗口获取的方法不一样,这才郁闷
许文君 2011-05-18
  • 打赏
  • 举报
回复
拦截鼠标左击事件,然后获取当前焦点控件hwnd,em_getsel获取选中文字,对于非edit控件,你可以spy看下触发什么消息,待得回去给你看下
奋斗吧 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 visualeleven 的回复:]

可以参考一下屏幕取词的做法,希望对你有所帮助http://kisin.blogbus.com/logs/34740567.html
http://download.csdn.net/source/1223789
[/Quote]
我要的是拖黑的那一段文本啊,不是鼠标位置的文本,这个的原理貌似就是使屏幕重绘,然后拦截ExTextOut的调用,再获取到鼠标所在位置的文本,不过这个代码也确实不错,值得研究一下,继续等高手
Eleven 2011-05-17
  • 打赏
  • 举报
回复
可以参考一下屏幕取词的做法,希望对你有所帮助http://kisin.blogbus.com/logs/34740567.html
http://download.csdn.net/source/1223789
奋斗吧 2011-05-17
  • 打赏
  • 举报
回复
没人我自顶
奋斗吧 2011-05-17
  • 打赏
  • 举报
回复
汗,真的就没人答,我在这里提问的问题几乎没有一个人回答的,郁闷
奋斗吧 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]

获取其他窗口的Text只要调用 GetWindowText即可,根本不需要钩子。

GetWindowText也是可以跨进程的,不需要进程之间通信。
[/Quote]
GetWindowText得到的是一个窗口的标题吧?我要的是选中的文本,不如我拖黑浏览器上的某一段文字,我要得到那一段文字的内容
healer_kx 2011-05-17
  • 打赏
  • 举报
回复
获取其他窗口的Text只要调用 GetWindowText即可,根本不需要钩子。

GetWindowText也是可以跨进程的,不需要进程之间通信。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧