我们前面已经理解了如何使用官方的代码实现鼠标键盘的监控,其实还差一点,因为他的代码只能捕捉单个的按键,而其实我们要的是组合键。什么是组合键呢?比如我想定义同时按下WIN+C是去执行屏幕截图。这只要理解为WIN键按下且没有弹起,C键也被按下,然后去执行一个EXE程序即可。

我们需要写一个类把之前的封装起来

这样就比较简洁,初始化和添加绑定都只用了一行(+=就是添加绑定,读者也可以测试多次+=的效果,-=就是取消绑定,这样做可以让主程序显得比较干净)

我们来思考一下如何实现捕捉一组按键,比如WIN键是第一个触发热键,C是第二个触发热键,触发之后执行CaptureScreen(屏幕截屏),如果D是第二个触发热键,就执行DrawScreen(屏幕绘图),所以很明显第一步是写一个触发的方法,如果HotKeyMain成立,再看第二个按键是否成立,如果都成立则执行指定的功能

初始化的时候,我们已经指定了HotKeyMain是LWin,HotKeySub是A-Z的26个字母(我们暂时不考虑更为复杂的情况,比如F1-F12的按钮,比如Tab,特殊符号作为热键的触发按钮)

检测到WIN键松开之后,第一个布尔值已经是false,就不会再触发任何功能了(当然这是我初步设想的逻辑方式,读者可以思考有没有更合理的方式,我们在下面一个部分会把这些放到Form1的内容移植到新的自定义类里面,把程序的表现层和业务层分开,方便我们扩展自己的类库)

具体到执行层面,我们只需要调用windows自带的process类即可(把三个EXE文件放在debug目录下),至于这三个EXE怎么来的就先不要管了(网上有很多,比如CaptureScreen这个EXE截图工具是搜狗截图自带的,我们直接拿过来用即可),因为最后我生成的EXE程序也是Debug目录打包即可,所以这里为了方便直接放到同目录下即可,process.StartInfo.FileName不需要跟详细路径

为了让用户可以自定义快捷键,我们还可以把字母的组合做成文件读写的方式(可以载入文件,也可以写入文件),最常见的文件读写方式肯定是TXT文件(我也提供了INI文件的读写类,后面会讲读写EXCEL,读写数据之类的,先掌握最简单的)。首先我们测试写入文件的方法,这里我们又新增了两个类,一个是FunctionSystem(获取系统常用的目录),一个是FunctionFileTXT(执行TXT文件的读写),这些功能都可以百度轻松找到,我们只是为了说明整合成自己的类的好处,可以直接调用

这里暂时不详细讲解读写文件的注意事项,有很多模式,很多参数,但是其实我们只会需要考虑几种常用的(追加的方式或者重写的方式),这里我们只是写入了三行快捷键对应的信息

而获取系统文件夹的功能FunctionSystem我们也会在后面继续扩展(因为除了快速的定位到常用的目录比如Programs Files文件夹,Windows文件夹,程序的目录,这个类还应该有很多其他功能,我们后面会扩展)

写入文件实现之后,接下来就考虑读取(为什么是XXX|C,XXX|D呢?这个是我们自己定义的,因为格式是自己设置的,你中间的分割符号也可以用空格或者其他字符,或者你也可以不用我这种一行对应一条参数的方式),我接下来就是要自己读取并解析刚才写入的文件(要仔细体会文件的读取和写入过程,并不在于读写的具体代码,因为网上可以找到很多照抄就行了,而是为什么读写成这样,如何以最简单的格式保存变量)

有了读写之后,重置就很简单了,就是写入默认的参数而已(可以直接复制一份写入,把原来的变量该成常量即可)

读取文件的时候我们还引入了字符串的解析(只是把字符串按照某个字符提取到字符串数组或直接转成浮点数组),这个也是暂时不需要完全掌握,简单的有转义字符,复杂的有正则表达式,都是够学一个礼拜的,但是大部分情况下只要能找到,能拿别人的用就可以了,我们后续会接着完善这个FunctionString这个类(先是对整个配置文件按\n提取到行,再对每一行按|拆分成字符串,提取每一行的|之后的那个字符串),其实还有很多工作可以做,比如程序刚载入的时候读取参数,比如对用户输入的自定义参数做限制,防止非法输入等等,我们将在下面一部分介绍。

更多教学视频和资料下载,欢迎关注以下信息:

我的优酷空间:

http://i.youku.com/acetaohai123

我的在线论坛:

http://csrobot.gz01.bdysite.com/

问题交流:

QQ:910358960

邮箱:acetaohai123@163.com

转载于:https://www.cnblogs.com/acetaohai123/p/7586692.html

C#基础视频教程5.2 如何编写简单的超级热键相关推荐

  1. C#基础视频教程4.3 如何编写简单的计算器

    我们接着往下改,为了让这个计算器更加实用,我们要像官方的计算器一样可以接着计算(你算出来一笔数据之后,可以接着累加累减,我们暂时不考虑加括号,优先级之类的,因为绝大部分情况下我们打开计算器就是为了进行 ...

  2. [基础]PHP Web数据库访问编写简单示例——图书售卖系统示例[2/2]

    PHP Web服务端脚本编写示例--图书售卖系统示例[1/2] PHP Web数据库访问编写简单示例--图书售卖系统示例[2/2] (2020年1月29日11:32:15更新文章排版,内容未修改) 南 ...

  3. IntellJ IDEA 基础之 一些常用插件plugin 简单整理 (辅助提高编写代码效率)

    IntellJ IDEA 基础之 一些常用插件plugin 简单整理 (辅助提高编写代码效率) 目录 IntellJ IDEA 基础之 一些常用插件plugin 简单整理 (辅助提高编写代码效率) 一 ...

  4. python基础教程视频(全13集)-Python基础视频教程全集

    原标题:Python基础视频教程全集 Python编程语言的定位是"优雅"."明确"."简单",所以对于Python初学者来说,学起来没有那 ...

  5. python基础教程视频-Python基础视频教程全集

    原标题:Python基础视频教程全集 Python编程语言的定位是"优雅"."明确"."简单",所以对于Python初学者来说,学起来没有那 ...

  6. python免费领取视频-180集全套python基础视频教程+电子教材,限时免费领取

    好东西,希望更多的人能够看到,纯免费. 关于python基础视频教程,本课程分为基础入门的短视频,特别适合初学者,每个视频都有代码例子. 附带pdf.html电子教材,方便大家下去学习.如果pytho ...

  7. Python基础视频教程

    Python基础视频教程 Python编程语言的定位是"优雅"."明确"."简单",所以对于Python初学者来说,学起来没有那么复杂,程序 ...

  8. python教程视频大全_Python基础视频教程全集

    原标题:Python基础视频教程全集 Python编程语言的定位是"优雅"."明确"."简单",所以对于Python初学者来说,学起来没有那 ...

  9. 黑马程序员_毕向东_Java基础视频教程_Java基础学习知识点总结

    黑马程序员_毕向东_Java基础视频教程 Java基础学习知识点总结 2016年01月06日  day01 一.基础知识:软件开发 1.什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合 ...

  10. 2014-11-18--Hadoop的基础学习(五)--编写不同MapReudce程序及其特性(下)

    2019独角兽企业重金招聘Python工程师标准>>> 5.Combiner编程 Combiner实质上就是不同上下文的Reducer的功能是差不多的.所以说它本质上就是一个Redu ...

最新文章

  1. python中执行sql语句_Python执行sql语句
  2. linux的find命令
  3. python gis 经纬度 库_入门-Python-GIS坐标转换
  4. 继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素...
  5. 4.4.6 数组也能无锁:AtomicIntegerArray
  6. JEECG 3.7 新装亮相,移动APP发布
  7. 童装英文外贸网站系统源码 v1.5.5
  8. linq判断集合中相同元素个数_高中数学:集合与函数概念知识点汇总
  9. 天猫要做“大”,京东怕不怕?
  10. 透明FLASH的插入方法
  11. 世界上最权威的68句创业名言
  12. 高德地图各种摄像头图标_汽车导航怎么看?高德地图各种符号图标图解大全
  13. 《C语言及程序设计》实践参考——定期存款利息计算器
  14. xcode7.3.1升级iOS10 SDK
  15. 计算机导航辅助教程,计算机导航辅助技术带给骨肿瘤外科医生的思考
  16. iTerm2终端工具在Mac OS上使用详解
  17. Exadata 的网络概述
  18. 如何生活而不是活着?
  19. Delphi 函数大全
  20. css 不同语言下设置不同的字体

热门文章

  1. 微生活时光机:去项目中挖掘JS模块化简史
  2. android下拉水波纹,android自定义WaveView水波纹控件
  3. 每日一面 - 为何hashmap默认的负载因子是0.75?应该是空间和时间的折中,背后的统计原理是什么呢?
  4. python tokenize_python – 滥用nltk的word_tokenize(已发送)的后果
  5. DataFrame-删除行列
  6. 如何检测本地网络环境,本地网络是否稳定
  7. English in December
  8. 求两个单链表的差集和并集
  9. Android 多渠道打包与开发
  10. NLP比赛-小布助手对话短文本语义匹配