博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#基础视频教程5.3 如何编写简单的超级热键
阅读量:5272 次
发布时间:2019-06-14

本文共 2027 字,大约阅读时间需要 6 分钟。

跟前面一章讲解计算器一样,到最后一小节,我们总是要把代码规整好,让整个程序显得非常简洁,先做个文件夹把我们自定义的类库都放进去

 

然后我们开始整理Form1里面的代码,为了实现超级热键的功能,我们应该完善FunctionMouseKeyboardHook这个类(因为现在叫做超级热键,可能后面我们需要用鼠标键盘来触发干一些别的事情,到时候如果也能拿着代码直接移植就会很有意义,不改变业务的框架,WIN+A/Z的字母应该已经够用了,而且考虑不跟系统自带的快捷键冲突,例如WIN+L是系统自带的锁定计算器),那么除了我们移植了人家的范例代码的对象,我们还需要增加额外的对象(这些都是从Form1中挪过来的)

 

方法也是一样,从Form1中直接挪过来,其实就是两个方面,一个是鼠标键盘的触发,一个是配置文件的读写

 

这样做的好处是显而易见的,Form1中非常干净,只是引用了类库,然后初始化用了一行,然后点击按钮之后就是把文本框的数据采集出来执行读写,而且所有功能都是在类里面交互。这样很方便移植和扩展,而且也是为什么要分成这么多步骤慢慢实现的原因(都放到Form1中也能做,但是并不利于扩展,我们要把程序做的越简洁越好)

 

对于鼠标键盘的监控,我们只是在委托中刷新FunctionHook的静态属性,然后Form1做了一个定时器每隔100ms刷新去获取。这样做是为了调试方便,因为在label中显示当前的鼠标键盘操作已经可以不用,我们完全可以实现我们要的功能,然而保留这些却可以清楚的知道我们的事件是如何被触发的,有没有被触发。

 

对于读写文件部分,我们还做了额外的判断,这也是一个简单的编程技巧(先做一个bool值为true,几组快捷键只要有一个不正确,就一个都不会执行),并且整个函数不是void而是bool,也就是说Form在调用我们类的时候是能够知道完成没有的,如果没有完成,也不要刷新界面的控件了(比如你写入一个非法值,明明是错的,却文本框还是被写进去了,用这样的做法可以提高代码的质量)

 

在这个封装好的类的基础上,我们再简单完善一下,比如要把前面读写的参数做成可以导入导出的形式,最简单的方法是使用C#自带的控件。

参数导入,本质是打开文件的对话框(找到一个文件并打开,获取这个文件的完整路径和文件名OpenFileDialog)在我自定义的类中,已经可以傻瓜到设置一个初始目录,设置文件类型即可(一般初始目录设置在程序的根目录下,文件类型设置成常规即可,读者可以自己看看有没有其他方式,比如C#自带的控件的方式如何实现)

 

参数导出,本质是保存文件的对话框(设置一个文件名并保存,获取这个文件的完整路径和文件名SaveFileDialog)在我自定义的类中,已经可以傻瓜到设置一个初始目录,设置文件类型即可(一般初始目录设置在程序的根目录下,文件类型设置成常规即可,读者可以自己看看有没有其他方式,比如C#自带的控件的方式如何实现)

 

最后看看如何打开截图文件夹,由于搜索自带的截屏会在他的EXE的同一个目录下生成一个pool的文件夹(这个是他写死的,不能改)我们只要找到这个EXE目录下的pool目录打开即可(打开文件夹也是很常用的功能,放到FunctionSystem类下会经常用得到)

 

最后为了对比TXT和INI的读写,我也把INI的读写简单实现了一下(INI比TXT来说就是更加规范一点,section是节点,Key是名称,Value是数值,你可以有多个节点,每个节点下有多个Key,每个Key对应一个Value即可),感兴趣的读者可以自己完善(如果要详细列举读写文件,也是很多的,XML,XLS,数据库都是,而且各有优缺点,初学者掌握一两种常用的即可)

 

总结:本节课程还是比较长,因为我们又扩充了很多自定义的类(FunctionSystem,FunctionString),每一个类都会以后在实际的项目中提高编程效率,减少垃圾代码,读者还是需要仔细体会代码是怎么样一步一步修改到足够精简的(其实这个超级热键还是可以接着扩展,做的更加实用,比如开机自动启动,最小化托盘图标,或者跟我们前一节写的计算器结合起来,一个快捷键打开计算器,读者可以自由发挥)。

1 理解如何使用别人的类,快速看懂别人整个的从控件到实现的流程,能移植别人的代码自己用

2 学会自己构建一些,扩展一些功能(比如这次别人的代码中只是能捕捉鼠标键盘,那么捕捉组合按键就是要自己想办法实现的)

3 学会自己扩展自己的类库,尤其是跟系统打交道比如文件处理,甚至系统时间,系统硬件,系统内存消耗这些我们都可能会用到,跟字符串打交道(变量的导入导出之类的)

 

 

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

我的优酷空间:

 

我的在线论坛:

 

问题交流:

QQ:910358960

邮箱:

 

 

 

 

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

你可能感兴趣的文章
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
《弟子规》下的沉思
查看>>
网络流24题 飞行员配对方案问题
查看>>
剑指offer python版 调整数组顺序使奇数位于偶数前面
查看>>
Leader of All Crushing Machines in the Future
查看>>
设置dataGridView单元格颜色、字体、ToolTip、字体颜色
查看>>
对项目重命名
查看>>
tkinter学习三
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>
【BZOJ 3155】Preprefix sum(树状数组)
查看>>
【洛谷 2430】严酷的训练
查看>>
中年男人 中年女人 中年人
查看>>
GoFramework框架简介(三)通信机制篇
查看>>
Winform开发框架之权限管理系统功能介绍
查看>>
从C#到Objective-C,循序渐进学习苹果开发(1)--准备开发账号和开发环境
查看>>
视图的定义、更新、撤销
查看>>
iOS之页面传值-----单例传值、通知传值
查看>>
数组换位子
查看>>