zoukankan      html  css  js  c++  java
  • C#基础视频教程5.2 如何编写简单的超级热键

    我们前面已经理解了如何使用官方的代码实现鼠标键盘的监控,其实还差一点,因为他的代码只能捕捉单个的按键,而其实我们要的是组合键。什么是组合键呢?比如我想定义同时按下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这个类(先是对整个配置文件按 提取到行,再对每一行按|拆分成字符串,提取每一行的|之后的那个字符串),其实还有很多工作可以做,比如程序刚载入的时候读取参数,比如对用户输入的自定义参数做限制,防止非法输入等等,我们将在下面一部分介绍。

     

     

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

    我的优酷空间:

    http://i.youku.com/acetaohai123

     

    我的在线论坛:

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

     

    问题交流:

    QQ:910358960

    邮箱:acetaohai123@163.com

     

     

     

  • 相关阅读:
    我的物联网项目(七)前期线上事故
    我的物联网项目(六)推广策略
    我的物联网项目(五)下单渠道
    我的物联网项目(四)订单系统
    我的物联网项目(三)平台架构
    我的物联网项目(二)初建团队
    我的物联网项目(一)开端
    從需求分析開始
    提升GDI画图的效率
    C#写COM组件,JS调用控件
  • 原文地址:https://www.cnblogs.com/acetaohai123/p/7586692.html
Copyright © 2011-2022 走看看