如何判断鼠标在窗体外的停留和移动

zhui22222 2014-11-03 04:45:54
想做个类似金山词霸的屏幕取词程序,利用金山的取词插件可以实现屏幕取词,也就是实现了鼠标停留取词并显示窗体,我现在希望实现当鼠标从选中词移开时窗体自动关闭,取词插件好像没有提供相关事件,我如何判断?需要用全局鼠标钩子吗?
...全文
290 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
phommy 2014-11-04
  • 打赏
  • 举报
回复
按一定的频率通过Control.Position获取鼠标位置 然后用Graphics.CopyFromScreen获取鼠标周围的文字图像 最后ocr 当然也可以像上边说的hook系统调用,但兼容性会差一些。比如应用程序并没有直接往屏幕上DrawString而是画到缓存位图上直接帖到窗体(常用的技术),甚至用的是自己的字库(游戏常见),靠hook系统调用就无能为力
zjgdtl 2014-11-04
  • 打赏
  • 举报
回复
http://www.cnblogs.com/qiubole/articles/977764.html
zjgdtl 2014-11-04
  • 打赏
  • 举报
回复
肯定要钩子啊,钩子你怎么知道鼠标在你窗口外的哪里,而且,取词技术一个比较复杂的技术,里面包含的技术点非常多,需要用到windows api中的很多函数。。。你先去看看能不能注册个鼠标钩子获到鼠标位置把,之后的路还远
卧_槽 2014-11-04
  • 打赏
  • 举报
回复
引用 4 楼 zhui22222 的回复:
[quote=引用 1 楼 u013402605 的回复:] 我觉得你应该先把屏幕取词的原理用文字简单描述下。用不着钩子,用Cursor.Position就行
就是想模仿金山词霸屏幕取词,鼠标停留时获取鼠标所在处的文字(可以是别的进程界面的文字),自动打开窗口显示获取到的文字,当鼠标移开时,关闭窗口。[/quote] 必须用钩子。 如果你连钩子都不知道,劝你还是放弃。
zzyhost 2014-11-04
  • 打赏
  • 举报
回复
引用 4 楼 zhui22222 的回复:
[quote=引用 1 楼 u013402605 的回复:] 我觉得你应该先把屏幕取词的原理用文字简单描述下。用不着钩子,用Cursor.Position就行
就是想模仿金山词霸屏幕取词,鼠标停留时获取鼠标所在处的文字(可以是别的进程界面的文字),自动打开窗口显示获取到的文字,当鼠标移开时,关闭窗口。[/quote] 不说如何识别,就回答你标题说的,timer里用Cursor.Position判断一下就知道鼠标是否停留和移动了,钩子能不用尽量别用
卧_槽 2014-11-04
  • 打赏
  • 举报
回复
引用 8 楼 phommy 的回复:
按一定的频率通过Control.Position获取鼠标位置 然后用Graphics.CopyFromScreen获取鼠标周围的文字图像 最后ocr 当然也可以像上边说的hook系统调用,但兼容性会差一些。比如应用程序并没有直接往屏幕上DrawString而是画到缓存位图上直接帖到窗体(常用的技术),甚至用的是自己的字库(游戏常见),靠hook系统调用就无能为力
ocr的识别率先不说,首先如何判定获取区域大小就没法弄。除了hook,别无二法。
zhui22222 2014-11-03
  • 打赏
  • 举报
回复
引用 1 楼 u013402605 的回复:
我觉得你应该先把屏幕取词的原理用文字简单描述下。用不着钩子,用Cursor.Position就行
就是想模仿金山词霸屏幕取词,鼠标停留时获取鼠标所在处的文字(可以是别的进程界面的文字),自动打开窗口显示获取到的文字,当鼠标移开时,关闭窗口。
zhui22222 2014-11-03
  • 打赏
  • 举报
回复
引用 2 楼 yuwenge 的回复:
钩子截取鼠标i/o
能详细点吗
卧_槽 2014-11-03
  • 打赏
  • 举报
回复
钩子截取鼠标i/o
zzyhost 2014-11-03
  • 打赏
  • 举报
回复
我觉得你应该先把屏幕取词的原理用文字简单描述下。用不着钩子,用Cursor.Position就行

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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