LenoApp

屏幕划词,无感翻译。

简介

Leno,意即“沙罗”,类似于一种薄纱一样的织物。Leno查词就像这样一种似有似无的查词软件。

本来有道词典的划词翻译非常好用,但是总是会在勾选词边上显示一个搜索图标,个人觉得不够简洁。

另外很多时候,我们只是需要简单了解一个单词的中文含义,不需要其他详尽的用法等内容,此时就想要一个简洁的查词软件。

我其实想让整个程序作为一个很小的窗口,甚至是半透明的,隐藏在角落里,实时地查询想查的单词,实现无感查词。

即我想查的时候能很快找到,不想查的时候不要出现。(有点像渣男啊)

这就是我想做的,然而还有很多等待优化的地方,不过已经基本实现了全链路的功能。

使用

本软件是使用WPF Framework开发的,采用了Fluent设计,所以目前只能在Windows10上运行(实际上我没有在其他机器上测试过hhh)。

本项目是源代码,下载到本地后,用VS打开,生成release就可以使用了。

运行LenoApp.exe文件,就直接把小窗口移到屏幕角落,遇到想查的词,直接勾选,Leno就会自动查找了。

实现

实际上整个软件最麻烦的就是“屏幕划词”,如何从屏幕上取到文字?

我查找了一些资料,没找到Windows提供了能直接获取文字的接口,也没找到有道词典的技术实现。

现有的实现了屏幕取词的大致分几种:一是重绘窗体,确定鼠标位置的可勾选文字;二是获取鼠标附近的像素点,通过类似OCR的方式获取文字;三是“曲线救国”的方式,就是借用剪贴板获取文字。前两种稍显复杂,第三种最好实现,Leno即是。

Leno查词在内部的技术实现主要分3步:

  1. 用Hook钩子,监控鼠标和键盘的特定操作(勾选到文字)
  2. 出现特定操作后,用keybd_event()函数模拟Ctrl+C操作,实际上就是复制勾选到的文字到剪贴板
  3. 从剪贴板获取复制到的文字,完成查词

监控鼠标键盘的部分,我借用了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其实蛮多的,比较粗糙。例如屏幕取词还不是很流畅,不能完全做到无感。

  1. 我在实现的时候,特定操作是松开鼠标左键。理论上想的是按下鼠标左键->移动鼠标勾选单词->松开左键->触发Ctrl+C操作就完成了取词,此时复制文字没有问题。

    但是任何时候按下松开鼠标左键都会触发Ctrl+C,操作不够细腻,容易出现大量误操作。

  2. 词量不多,词意不够。设计的是模糊搜索,就是形近的单词都会查找,形成一个列表。所以输入框下面的控件实际上是一个列表。
    量误操作。

  3. 词量不多,词意不够。设计的是模糊搜索,就是形近的单词都会查找,形成一个列表。所以输入框下面的控件实际上是一个列表。

GitHub仓库:LenoApp

LenoApp——屏幕划词,无感翻译相关推荐

  1. idea 划词就能翻译的插件_划词翻译插件下载-划词翻译Chrome插件-独木成林

    划词翻译Chrome插件是一款强大的电脑翻译工具,它基于谷歌Chrome内核,可以帮助用户进行国内外多种语音的翻译操作,拥有百度翻译.有道翻译和谷歌翻译等多种翻译引擎,支持中外文互译,并且多种文档都有 ...

  2. 5个超好用的屏幕划词翻译软件,选中文字就能翻译

    分享5个划词翻译工具,支持翻译多种语言,并且有多种翻译源和词典可以选择! 一.划词翻译插件 1.Talent划词翻译 一个好用的划词翻译插件,支持Chrome.Edge.360等主流浏览器,安装之后选 ...

  3. 有道翻译的划词图标在adobe acrobat pro不显示

    问题 在使用有道翻译PC端时启用了OCR和划词翻译,可以在word和网页上划词,但是在pdf软件(adobe acrobat pro)内划词无图标提示. 解决方案: 编辑–>首选项–>安全 ...

  4. 基于Edge浏览器的沙拉划词插件使用教程(好用的翻译插件)

    1.使用目的 - 使用沙拉划词实现网页多种翻译源进行实时翻译. - 使用沙拉划词实现PDF翻译. 2.安装方法 2.1 打开edge扩展 点击工具栏右侧- 然后点击扩展 进入扩展 2.2 下载沙拉划词 ...

  5. 安装侧边翻译,划词翻译,看外文论文神器,比知云还好用Edge Translate

    前言 写论文相信大家参考的大多数都是外文文献,但是想我这样英文水平不佳的小伙伴还是比较多的,所以看外文文献就很费劲.         有的小伙伴用谷歌或者百度翻译 一边复制翻译一边看, 后来用知云翻译 ...

  6. Chrome 浏览器翻译插件划词翻译

    Chrome 浏览器翻译插件划词翻译 截图 下载:划词翻译__chrome扩展插件下载_极简插件 (zzzmh.cn) 简介: 一个简便但强大的划词翻译类插件.支持谷歌.百度.有道三大翻译和朗读引擎, ...

  7. 欧路词典 – 屏幕取词划词翻译 [Mac]

    :欧路词典是 Mac 系统上一款国产辞典软件,亮点在于屏幕取词.软件本身的功能也十分强大:能够模糊搜索.只能拼写校正,还能进行文段翻译.朗读.专门针对语言学习者,提供生词本.历史记录等功能.自带词库编 ...

  8. ununtu20.04系统中如何划词翻译_如何高效阅读PDF外文文献,这一篇文章全搞定

    对于很多初学者而言,阅读外文文献时非常痛苦的.句型复杂.生词多以及读者本身对外文文献的排斥感,都是造成阅读障碍的主要因素. 当然,如果你学会以下小编分享的一些技巧,可能并不觉得阅读那么难熬. 首先:建 ...

  9. Ubuntu18.04有线+离线划词翻译GoldenDict

    1.安装GoldenDict //得到鼠标选中内容 sudo apt-get install xclip //翻译工具的命令行版本 sudo apt-get install sdcv //作为系统通知 ...

最新文章

  1. synchronized 与 Reentrant均为可重入锁 区别后者比前者增加了长时等待可中断 设置是否公平锁 绑定多个条件
  2. freemarker中 感叹号、双感叹号、问号、双问号 的使用方法
  3. Python学习--最完整的基础知识大全
  4. 基于数据库的事务消息解决分布式事务方案
  5. python有趣的面试题_一道3行代码的Python面试题,我懵逼了...|python基础教程|python入门|python教程...
  6. 【POJ - 2398】Toy Storage (计算几何,二分找位置,叉积,点和直线的位置关系)
  7. 完整nagios安装最新pnp版绘图-sync模式
  8. 卷积神经网络的参数量和计算量
  9. Java编程思想(第4版)(评注版)
  10. 适用于stuido one的虚拟贝斯手插件:UJAM Virtual Bassist ROYAL for Mac
  11. iPhone开发之修改UINavigation Bar背景图片
  12. matlab word 查找 词组,matlab搜索word文档
  13. tcl计算机语言,简述TCL语言的应用
  14. 初探机器学习之使用讯飞TTS服务实现在线语音合成
  15. 计算机系统结构层次划分,网络的体系结构及其划分所遵循的原则
  16. 干货!!不同程序员岗位对不同电脑性能的要求(编程开发选电脑)
  17. idea解决Command line is too long. Shorten command line for ServiceStarter or also for Application报错
  18. 史上最强!PC时代的20位英雄
  19. 家乡菜之回锅茄子_wizard_新浪博客
  20. EMC封装成形常见缺陷

热门文章

  1. 全景图片怎么制作?360度全景展示系统都有哪些功能?
  2. 30天自制操作系统——用U盘启动自制系统
  3. 活动回顾:音视频低时延应用的技术实践(下)
  4. Premiere不能导入视频怎么办?详细全面的快速解决办法
  5. Java程序设计 北京大学 Week2互评作业
  6. 仿 淘宝搜索栏,实现 用户输入搜索关键字时可以显示 搜索提示 的效果 Ajax
  7. Kafka两种配置文件方式
  8. 实现pc/移动端加载不同css样式
  9. 操作系统学习笔记:安全
  10. React实现PPT预览(伪)