LenoApp——屏幕划词,无感翻译
LenoApp
屏幕划词,无感翻译。
简介
Leno,意即“沙罗”,类似于一种薄纱一样的织物。Leno查词就像这样一种似有似无的查词软件。
本来有道词典的划词翻译非常好用,但是总是会在勾选词边上显示一个搜索图标,个人觉得不够简洁。
另外很多时候,我们只是需要简单了解一个单词的中文含义,不需要其他详尽的用法等内容,此时就想要一个简洁的查词软件。
我其实想让整个程序作为一个很小的窗口,甚至是半透明的,隐藏在角落里,实时地查询想查的单词,实现无感查词。
即我想查的时候能很快找到,不想查的时候不要出现。(有点像渣男啊)
这就是我想做的,然而还有很多等待优化的地方,不过已经基本实现了全链路的功能。
使用
本软件是使用WPF Framework开发的,采用了Fluent设计,所以目前只能在Windows10上运行(实际上我没有在其他机器上测试过hhh)。
本项目是源代码,下载到本地后,用VS打开,生成release就可以使用了。
运行LenoApp.exe文件,就直接把小窗口移到屏幕角落,遇到想查的词,直接勾选,Leno就会自动查找了。
实现
实际上整个软件最麻烦的就是“屏幕划词”,如何从屏幕上取到文字?
我查找了一些资料,没找到Windows提供了能直接获取文字的接口,也没找到有道词典的技术实现。
现有的实现了屏幕取词的大致分几种:一是重绘窗体,确定鼠标位置的可勾选文字;二是获取鼠标附近的像素点,通过类似OCR的方式获取文字;三是“曲线救国”的方式,就是借用剪贴板获取文字。前两种稍显复杂,第三种最好实现,Leno即是。
Leno查词在内部的技术实现主要分3步:
- 用Hook钩子,监控鼠标和键盘的特定操作(勾选到文字)
- 出现特定操作后,用keybd_event()函数模拟Ctrl+C操作,实际上就是复制勾选到的文字到剪贴板
- 从剪贴板获取复制到的文字,完成查词
监控鼠标键盘的部分,我借用了ZZRRegion的项目Hook,这个项目比较完整,基本实现了所有功能(但是双击鼠标好像有点问题)。
模拟Ctrl+C操作,这里会出现的一个问题是模拟Ctrl+C操作后马上去获取剪贴板内容是拿不到的,可能是没有反应过来吧,所以要Sleep一会儿。CSDN博客《windows下的屏幕划词》有讲。
keybd_event((byte)Keys.ControlKey, 0, 0, 0);//模拟按下ctrl
keybd_event((byte)Keys.C, 0, 0, 0);//模拟按下c
keybd_event((byte)Keys.ControlKey, 0, 2, 0);//模拟松开ctrl
keybd_event((byte)Keys.C, 0, 2, 0);//模拟松开c
查词的来源是我自己做了一个非常简单的服务接口,词源是1eez的项目103976,大概有103520个词。
可以通过这个接口访问:http://www.crazyphilip.space:8092/Search/love
截图
有待优化
没花多少时间做,bug其实蛮多的,比较粗糙。例如屏幕取词还不是很流畅,不能完全做到无感。
我在实现的时候,特定操作是松开鼠标左键。理论上想的是按下鼠标左键->移动鼠标勾选单词->松开左键->触发Ctrl+C操作就完成了取词,此时复制文字没有问题。
但是任何时候按下松开鼠标左键都会触发Ctrl+C,操作不够细腻,容易出现大量误操作。
词量不多,词意不够。设计的是模糊搜索,就是形近的单词都会查找,形成一个列表。所以输入框下面的控件实际上是一个列表。
量误操作。词量不多,词意不够。设计的是模糊搜索,就是形近的单词都会查找,形成一个列表。所以输入框下面的控件实际上是一个列表。
GitHub仓库:LenoApp
LenoApp——屏幕划词,无感翻译相关推荐
- idea 划词就能翻译的插件_划词翻译插件下载-划词翻译Chrome插件-独木成林
划词翻译Chrome插件是一款强大的电脑翻译工具,它基于谷歌Chrome内核,可以帮助用户进行国内外多种语音的翻译操作,拥有百度翻译.有道翻译和谷歌翻译等多种翻译引擎,支持中外文互译,并且多种文档都有 ...
- 5个超好用的屏幕划词翻译软件,选中文字就能翻译
分享5个划词翻译工具,支持翻译多种语言,并且有多种翻译源和词典可以选择! 一.划词翻译插件 1.Talent划词翻译 一个好用的划词翻译插件,支持Chrome.Edge.360等主流浏览器,安装之后选 ...
- 有道翻译的划词图标在adobe acrobat pro不显示
问题 在使用有道翻译PC端时启用了OCR和划词翻译,可以在word和网页上划词,但是在pdf软件(adobe acrobat pro)内划词无图标提示. 解决方案: 编辑–>首选项–>安全 ...
- 基于Edge浏览器的沙拉划词插件使用教程(好用的翻译插件)
1.使用目的 - 使用沙拉划词实现网页多种翻译源进行实时翻译. - 使用沙拉划词实现PDF翻译. 2.安装方法 2.1 打开edge扩展 点击工具栏右侧- 然后点击扩展 进入扩展 2.2 下载沙拉划词 ...
- 安装侧边翻译,划词翻译,看外文论文神器,比知云还好用Edge Translate
前言 写论文相信大家参考的大多数都是外文文献,但是想我这样英文水平不佳的小伙伴还是比较多的,所以看外文文献就很费劲. 有的小伙伴用谷歌或者百度翻译 一边复制翻译一边看, 后来用知云翻译 ...
- Chrome 浏览器翻译插件划词翻译
Chrome 浏览器翻译插件划词翻译 截图 下载:划词翻译__chrome扩展插件下载_极简插件 (zzzmh.cn) 简介: 一个简便但强大的划词翻译类插件.支持谷歌.百度.有道三大翻译和朗读引擎, ...
- 欧路词典 – 屏幕取词划词翻译 [Mac]
:欧路词典是 Mac 系统上一款国产辞典软件,亮点在于屏幕取词.软件本身的功能也十分强大:能够模糊搜索.只能拼写校正,还能进行文段翻译.朗读.专门针对语言学习者,提供生词本.历史记录等功能.自带词库编 ...
- ununtu20.04系统中如何划词翻译_如何高效阅读PDF外文文献,这一篇文章全搞定
对于很多初学者而言,阅读外文文献时非常痛苦的.句型复杂.生词多以及读者本身对外文文献的排斥感,都是造成阅读障碍的主要因素. 当然,如果你学会以下小编分享的一些技巧,可能并不觉得阅读那么难熬. 首先:建 ...
- Ubuntu18.04有线+离线划词翻译GoldenDict
1.安装GoldenDict //得到鼠标选中内容 sudo apt-get install xclip //翻译工具的命令行版本 sudo apt-get install sdcv //作为系统通知 ...
最新文章
- synchronized 与 Reentrant均为可重入锁 区别后者比前者增加了长时等待可中断 设置是否公平锁 绑定多个条件
- freemarker中 感叹号、双感叹号、问号、双问号 的使用方法
- Python学习--最完整的基础知识大全
- 基于数据库的事务消息解决分布式事务方案
- python有趣的面试题_一道3行代码的Python面试题,我懵逼了...|python基础教程|python入门|python教程...
- 【POJ - 2398】Toy Storage (计算几何,二分找位置,叉积,点和直线的位置关系)
- 完整nagios安装最新pnp版绘图-sync模式
- 卷积神经网络的参数量和计算量
- Java编程思想(第4版)(评注版)
- 适用于stuido one的虚拟贝斯手插件:UJAM Virtual Bassist ROYAL for Mac
- iPhone开发之修改UINavigation Bar背景图片
- matlab word 查找 词组,matlab搜索word文档
- tcl计算机语言,简述TCL语言的应用
- 初探机器学习之使用讯飞TTS服务实现在线语音合成
- 计算机系统结构层次划分,网络的体系结构及其划分所遵循的原则
- 干货!!不同程序员岗位对不同电脑性能的要求(编程开发选电脑)
- idea解决Command line is too long. Shorten command line for ServiceStarter or also for Application报错
- 史上最强!PC时代的20位英雄
- 家乡菜之回锅茄子_wizard_新浪博客
- EMC封装成形常见缺陷