分享我的小软件以及心得

本人并非专业的程序员,但对编程有着浓厚的兴趣,而这种兴趣始于大一时学习C++课程之后。几年来我经常利用业余时间写点儿小程序,或者看一些理论书籍,对编程和软件开发也有了一定的认识。

      去年9月份,我还用着一台很旧的长城笔记本电脑,经常死机的烂机器而且官方提供的驱动程序仅支持32位系统,后来由于学习AE换用了64位win7系统,这导致调节音量或者屏幕亮度时不能在屏幕上显示提示信息了。虽然这只是无关紧要的问题,但想到自己会一点儿编程,心想何不为自己定制一款用于提示音量信息的小工具软件呢?

      很快我就开始着手准备了,而且最初的想法也因为灵感不断涌现而变得充实起来,并逐步实现。到后来,软件不仅能提示音量信息,而且能够自定义音量调节快捷键,随后又加入了电量监控,定时任务,音量环境模式以及Capslock、Numlock状态提示功能(因为当时的机器大写锁定提示灯在前缘,很不方便,搞不懂为什么会有这么蛋疼的设计,现在用的联想Z580也是这样)。眼看的这个程序起来越有一个软件的样了,也开始有使用者反馈意见和建议,这使我很欣慰,虽然这种软件是很小众的,但毕竟有人会用。在此之前有国外牛人做的Volume2已经很成熟了(事实上我的软件最初也借鉴了这款软件,还有另一款不太出名的“都客”音量调节软件),所以我决定进一步改进它,当然并不期望能超越Volume2,只不过竭尽所能使软件更完善。

     下面的两幅图是比较早版本的关于页面和设置界面

 

     在之后的一个版本中我尝试着改进自定义提示窗口的方法,但看起来并不太好。

  而下面的图是最新的版本设置窗口其中的一个子页面以及软件的“关于”页面。                         

 

 

 

      当然中间还有几个版本,可以看到,整体的变化还是很大的。虽然软件还不完善,但纵观始末,一切都在向好的方向演变。

      现在我将公开这个软件整个项目文件,它最后一次编译是在我着手写这篇博文的几小时之前,算是最新的版本了吧。其中肯定也还有不少问题,希望能有高人会有兴趣并对它进行改进,同时也算是分享一下自己的经历以及从中学到的经验吧。

音量快捷助手1.2.2免安装版下载地址

 

项目文件下载地址 

http://pan.baidu.com/share/link?shareid=545596&uk=2232311271

     软件使用C#语言编写的,开发平台是Visual Studio2012,.netframework版本4.5,不过在发布时将改成了4.0以免部分人因版本过低而无法使用。另外我使用的DotNetBar控件,相关软件博客园也有高人及时破解。下面是这位高人的主页

http://home.cnblogs.com/u/tracky/

在本文开头提到过,我最初学习的是C++,也曾经试着做过MFC程序,但感觉那个太麻烦,本人开始制作这个软件的时候刚接触C#一个多月,但发现它异常好用,一番摸索过后很快就找到感觉了。文件中的注释可能不全面,而且因为并非专业人士,整体也不太规范。

最后分享几点儿小经验: 

1、对于完成这种全局快捷键功能,一般可以采取钩子或者注册全局热键。后一方法在代码方面要简洁得多,但考虑到本软件要定义很多快捷键,并且还要响应多媒体按键以及鼠标键,我选择了全局钩子。期间学到的经验就是如果能找到别人现成的代码,就别自己从头来过,这样会省下不少时间的精力。项目中使用的键盘和鼠标钩子就是一外国人写的,当然借用别人的也不能照搬,需要针对自己的目的进行修改,更正其中的错误并使代码更高效。

2、Vista或更高的系统中调节音量可以使用CoreAudioApi。CoreAudioApi也就是核心音频API,它提供的函数可以很方面地获取音量信息和调节音量。这个动态库文件可以上网上下载,其中的一函数用法之类的都可以在网上找到比较详细的示例。比如我在codeproject找到了一个不错的范例。

具体用法请移步http://www.codeproject.com/Articles/18520/Vista-Core-Audio-API-Master-Volume-Control

3、关于WinFrom项目里面的settings文件的用法。

Settings文件是一种比较简单的保存用户设置的文件,它可以保存很多类型的变量,除了常规的int,string,bool等,也可以先Point,keys等类型,而我在这个项目里就是就keys来保存设置的快捷键的,而Point用来保存提示窗口的位置。如下图所示

 

另外,网上关于Settings文件的用法大多在说如何用Save()函数将设置保存到本地,而对于其它的一些函数很少说明。我自己摸索出一条很有用的技巧,就是使用它的Reset()函数使设置恢复默认状态。这个函数在前几天才发现,而在此之前我还很笨的在项目中保存两个Settings文件,一个用于存储用户设置一个用于默认设置,而恢复默认的时候将默认Settings文件的值一个个赋给控件……现在想想,实在是太蠢了。

4、前面几条中提到的我在网上找到不少例子,这一点也是很重要的经验。CSDN,CodeProject以及博客园等专业网站都能学到不少东西。

5、乐于折腾并且善于折腾,不断尝试新的想法,有灵感的时候随时记录下来。当然在折腾之前得记得备份,这是善于折腾的要点,也是我从惨痛的教训中学到的。

 这是我的第一篇博客,如果对我的软件有兴趣可以和我讨论。也欢迎高手赐教!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值