初衷

本人的英语一塌糊涂,经常性的单词拼写错误!导致在和其他项目对接时闹出笑话。所以,既然人力无法改变,那就让科技来吧!!!(尴尬。。。

README!

因为
它是基于C#开发出的Winform程序;
它是基于百度翻译进行开发的;
它的服务对象是代码工作者;

所以
它需要.Net4.5的环境;
它需要联网;
它只有中-英翻译模式,且翻译规则为驼峰。

使用
界面可以选择翻译键(目前只有鼠标按键);
Ctrl + C选取你要翻译的文本 ——> 点击翻译按键 ——> Ctrl + V粘贴翻译后的内容。

设计

软件功能图:

软件流程图:

攻坚

全局响应:

// An highlighted block
class MouseHook{public event System.Windows.Forms.MouseEventHandler MouseDownEvent;public event System.Windows.Forms.MouseEventHandler MouseClickEvent;public event System.Windows.Forms.MouseEventHandler MouseUpEvent;public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);static int hMouseHook = 0; //声明鼠标钩子处理的初始值public const int WH_MOUSE_LL = 14;   //线程键盘钩子监听鼠标消息设为2,全局键盘监听鼠标消息设为13HookProc MouseHookProcedure; //声明MouseHookProcedure作为HookProc类型//使用此功能,安装了一个钩子[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);//调用此函数卸载钩子[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern bool UnhookWindowsHookEx(int idHook);//使用此功能,通过信息钩子继续下一个钩子[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);// 取得当前线程编号(线程钩子需要用到)[DllImport("kernel32.dll")]static extern int GetCurrentThreadId();//使用WINDOWS API函数代替获取当前实例的函数,防止钩子失效[DllImport("kernel32.dll")]public static extern IntPtr GetModuleHandle(string name);public void Start(){// 安装键盘钩子if (hMouseHook == 0){MouseHookProcedure = new HookProc(MouseHookProc);hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProcedure, GetModuleHandle(System.Diagnostics.Process.GetCurrentProcess().MainModule.ModuleName), 0);//hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);//如果SetWindowsHookEx失败if (hMouseHook == 0){Stop();throw new Exception("安装键盘钩子失败");}}}public void Stop(){bool retMouse = true;if (hMouseHook != 0){retMouse = UnhookWindowsHookEx(hMouseHook);hMouseHook = 0;}if (!(retMouse)) throw new Exception("卸载钩子失败!");}//鼠标结构体[StructLayout(LayoutKind.Sequential)]public class MouseHookStruct{public Point pt;public int hwnd;public int wHitTestCode;public int dwExtraInfo;}private const int WM_MOUSEMOVE = 0x200;private const int WM_LBUTTONDOWN = 0x201;private const int WM_RBUTTONDOWN = 0x204;private const int WM_MBUTTONDOWN = 0x207;private const int WM_LBUTTONUP = 0x202;private const int WM_RBUTTONUP = 0x205;private const int WM_MBUTTONUP = 0x208;private const int WM_LBUTTONDBLCLK = 0x203;private const int WM_RBUTTONDBLCLK = 0x206;private const int WM_MBUTTONDBLCLK = 0x209;private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam){// 侦听键盘事件if ((nCode >= 0) && (MouseDownEvent != null || MouseUpEvent != null || MouseClickEvent != null)){MouseHookStruct mouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct));//鼠标单击//if (MouseClickEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))//{//    Keys keyData = (Keys)MyKeyboardHookStruct.vkCode;//    System.Windows.Forms.KeyEventArgs e = new System.Windows.Forms.KeyEventArgs(keyData);//    KeyDownEvent(this, e);//}//鼠标按下if (MouseDownEvent != null && (wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN || wParam == WM_MBUTTONDOWN)){MouseButtons btn = MouseButtons.None;switch (wParam){case WM_LBUTTONDOWN:{btn = MouseButtons.Left;break;}case WM_RBUTTONDOWN:{btn = MouseButtons.Right;break;}case WM_MBUTTONDOWN:{btn = MouseButtons.Middle;break;}}MouseEventArgs e = new MouseEventArgs(btn, 1, mouseHookStruct.pt.X, mouseHookStruct.pt.Y, 0);MouseDownEvent(this, e);}}//如果返回1,则结束消息,这个消息到此为止,不再传递。//如果返回0或调用CallNextHookEx函数则消息出了这个钩子继续往下传递,也就是传给消息真正的接受者return CallNextHookEx(hMouseHook, nCode, wParam, lParam);}~MouseHook(){Stop();}}

结语

开发用时,1个小时。基础功能已ok,但过于丑陋。大家看着拿去装修即可。巴拉巴拉…
源码地址:https://github.com/Dream9898123/Translate.git
开盖及食:链接: https://pan.baidu.com/s/1nZSh5qCOHR7vEdwVG603qw 提取码: bwq8

全局钩子,解决命名烦恼!——代码翻译小工具。相关推荐

  1. 代码翻译小工具——后续

    初衷 之前根据需要开发了一款*<全局钩子--代码翻译小工具>*的文章,后续收到了一些有建议性的反馈和在使用中的一些感受,所以做了一些升级. README!!! 因为: 使用时会因为网络问题 ...

  2. python利器怎么编程-Python实现翻译小工具!几行代码搞定!装逼利器有没有!

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面 二.代码 进群:548377875    即可 ...

  3. python英语翻译-python制作英语翻译小工具代码实例

    这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来 ...

  4. python自动翻译小工具_Python实现翻译小工具

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 git源码地址 Python实现翻 ...

  5. 【青少年编程】黄羽恒:翻译小工具 -- 利用百度翻译

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  6. 【青少年编程】黄羽恒:翻译小工具 -- 利用有道翻译

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  7. 把python语言翻译出来_Python语言实现翻译小工具(Python打包成exe文件)

    本文主要向大家介绍了Python语言实现翻译小工具(Python打包成exe文件),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 1.环境 windows10 python3.5 ...

  8. python制作小工具_利用Python制作翻译小工具

    话不多说,直接上代码. Component文件: # coding:utf-8 from tkinter import * from tkinter import ttk from tkinter i ...

  9. python英语翻译-python制作英语翻译小工具

    用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() ...

  10. python制作翻译小软件_如何基于Python制作有道翻译小工具

    这篇文章主要介绍了如何基于Python制作有道翻译小工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 该工具主要是利用了爬虫,爬取web有道翻译的 ...

最新文章

  1. 学硕计算机306分调剂,考研学硕可调剂专硕 需符合两个条件
  2. SZOJ 142 钦定
  3. Xamarin iOS教程之键盘的使用和设置
  4. python进行数据分析 kindle_利用Python进行数据分析
  5. nginx 认证多个客户端的问题
  6. 计算机视觉开源库OpenCV之照明和色彩空间
  7. ExtJs 实现动态列,动态多表头 在这里添加日志标题
  8. canal数据同步(客户端代码编写)
  9. 第一章计算机网络概述答案,第一章 计算机网络概述[3]
  10. windows server 2008 IE代理服务器实验
  11. Android开发笔记(二十二)瀑布流网格WaterfallGridView
  12. 序列(【CCF】NOI Online能力测试 提高组第一题)
  13. jquery中的map()方法与js中的map()方法
  14. WPF Telerik TreeListView样式设计
  15. 亚马逊出的平板电脑_亚马逊发布Fire HD 8新系列平板电脑,90美元起
  16. mysql静默安装_mysql5.7静默安装
  17. ts重点学习71-implement语句
  18. 爬取豆瓣电影排行榜top 250
  19. Retina屏下的图片优化
  20. 2012年的Android之旅:梦想、学习、坚持、自信、淡定

热门文章

  1. 怀疑chinaitlab的一个Linux模块被黑了!!
  2. win10如何深度清理c盘【系统天地】
  3. dell笔记本外接显示器_戴尔笔记本怎么连接外接显示器
  4. SQL Server 2000 打sp3补丁
  5. 漏洞补丁在线更新失败或软件安装提示ERROR的解决方案
  6. 数值计算与计算机应用实例,数值计算的若干应用实例求解4_8.doc
  7. 手机如何双声道录音_如何在手机端实现电话录音功能?
  8. 解密360黑幕:离职奇虎360老员工的告白
  9. 机器视觉:远心镜头使用规则
  10. MATLAB:简单GUI的设计流程