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

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

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

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

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

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

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

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

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

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

项目文件下载地址

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

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

转载于:https://www.cnblogs.com/Jeason/archive/2013/05/30/3107291.html

一个菜鸟的心得——音量快捷助手软件分享相关推荐

  1. ai助手APP,ai助手软件分享。

    ai助手APP,AI助手是一种人工智能技术,它可以模拟人类的思维和行为,以帮助人们完成各种任务,AI助手通常是基于机器学习和自然语言处理技术开发的,可以理解和回答人类语言的问题,提供有用的建议和指导, ...

  2. 【Arduino】这么方便?舵机快捷调试软件分享。

    舵机控制上位机软件 支持平台:win10.win7 文章目录 目录 前言 一.首先将烧入程序 二.将需要控制的舵机接上引脚​​​​​​​ 总结 ​​​​​​​ 前言 arduino在做舵机机械臂的位置 ...

  3. 一个菜鸟浅谈对 软件、程序、软件模型的认识 ——!

    作为一个菜鸟,让我谈关于软件,程序,软件模型的心得,无异于是很天方夜谭的事情,据说很多的专家于此都没有给出明确的定义,我就用这些年中对于电脑的认识,来随便说说. 1.谈到软件,太专业的术语即使说了,我 ...

  4. 一个菜鸟程序员的游戏开发心得

    对于一个只在大学期间学习了JavaScript,实习期间学习了点HTML.CSS的菜鸟,做游戏对我而言是一件想都不敢想的事情,后有幸被公司安排参与一款HTML5游戏的开发,才使我真正第一次与游戏来了次 ...

  5. 安利一个适合调试rt thread的串口助手软件

    本文由RT-Thread论坛用户@fhqmcu 原创发布:https://club.rt-thread.org/ask/article/3142.html 串口助手是单片机开发,ARM开发的必用工具, ...

  6. 一款 Windows 软件快捷助手

    WPF 开发的 Windows  软件快捷助手 Windows  软件快捷助手 作者:WPFDevelopersOrg - 驚鏵 原文链接:https://github.com/WPFDevelope ...

  7. 免费软件做的不错的,这里要说一个叫《飞秋》的软件

    免费软件做的不错的,这里要说一个叫< 飞秋>的软件.   文字表情图片对话 免费的局域网即时通讯平台,支持文字.图片.表情的多人群发:支持对方离线时发送:兼容飞鸽传书. 高速文件传输 支持 ...

  8. 基于android的校园服务平台,基于android平台的校园助手软件的设计

    近些年来,随着互联网及其相关技术的不断发展,学校信息化建设已逐渐成为人们关注的焦点.教务管理是整个学校管理工作的核心,学校管理者需要科学地运用高效的管理手段管理其他工作人员的工作,从而使得学校的教务管 ...

  9. Dos系统常用命令【案例---计算机快捷助手】

    Dos系统常用命令[案例-计算机快捷助手] Dos系统是基于磁盘管理的操作系统,与我们现在常用的操作系统,如win7.win10等操作系统有很大的区别,没有可视化的图形界面,而是通过命令行的形式进行交 ...

最新文章

  1. AMD Ryzen 5000‘Cezanne’APU
  2. svn更新maven项目报错_使用svn管理Maven项目的方法步骤
  3. 多线程中的指令重排问题
  4. ThoughtWorks微服务架构交流心得
  5. 测试开发面试集锦-测试方面(搬运)
  6. frome here on out
  7. 安卓入门系列-03安卓的开发方式(逻辑与视图分离)
  8. java分享第十七天-01(封装操作xml类)
  9. 前端学习(2442):解决跨域问题
  10. cgdb 调试_在MacOS上使用gdb(cgdb)调试Golang程序
  11. 详细讲述CV的创作与包装
  12. mysql简单的命令centos版
  13. 【编程珠玑】第四章 编写正确的程序
  14. 在Covid-19期间测量社交距离
  15. 30个ies光域网带图_15个让你脚下更细腻的经典控球训练
  16. 【正一专栏】读《夜谭十记》——爱不释手
  17. selenium下载和安装
  18. 打开阿里云网页为空白的解决办法
  19. 米勒-拉宾(MillerRabbin)素性测试算法模板
  20. XShell配置跳板机访问最终目标主机

热门文章

  1. 嵌入式 知识点 积累 (一)
  2. quartus生成qdb文件_quartus 生成qxp和vqm文件的方法
  3. 计算机技术考长沙理工大学难不难,长沙理工大学难考吗?长沙理工大学值得上吗?...
  4. 【调剂】河南理工大学计算机科学与技术学院2020年硕士研究生招生接收调剂公告...
  5. 在 icesword darkspy等入侵检测下隐藏文件的方法 【祝大家国庆快乐!】
  6. 权威解读:人工智能时代的分子模拟,这个工具不能少
  7. Linux安装系统注意事项及系统初始化
  8. Bugtags - App 测试 · 从未如此简单
  9. 产品研发的体系构建与研发过程管理第一讲
  10. 百度AI攻略:识别火车票的多种方法