存档

2015年4月 的存档

在控制面板中添加图标

2015年4月17日 没有评论

如果你的机器上安装了Java,那么会在控制面板上出现一个图标,点击图标后会弹出对话框来进行相关的设置。除了Java外,还有显卡、声卡等都是一样一样的。

对于有的应用程序,除了自身的主逻辑外,有时候还需要在控制面板添加入口,方便用户设置。例如一个windows系统服务,如果单独创建一个快捷方式的话,会被众多其它程序淹没在程序列表中。

我们在实现这个功能的时候,有去网上搜索一番,发现几乎全部都是用VC6或者C++ Builder来实现,一来是由于这些开发环境过于久远,在目前最新的win10系统中可能无法得到验证。另外的原因就在于目前还没有驾驭C++,所以自然想着有没有什么好的替代方案。C++的实现方案是使用cpl文件来达到目的,我们有机会单独展开说。

这里我们使用微软新推荐的方式,注册表,方便简单。

首先我们准备一个exe程序,举例叫做 Profile.exe 吧,然后利用工具生成一个GUID,比如叫做{49E28756-FD3A-4977-8758-AAF2BB10997C}好了。

接下来,我们在注册表HKEY_LCOAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace路径下新建一个子键项,名称为刚才我们生成的GUID,给这个项的默认值(Default)赋值,例如Profile。

第三步,在注册表HKEY_CLASSES_ROOT\CLSID下新建一个项,名称为刚生成的GUID,设置其默认值(Default)为Profile,这里建议和上一步设置的文字保持一致。添加字符串键LocalizedString、InfoTip、System.ApplicationName、System.ControlPanel.Category、System.Software.TaskFileUrl,并为它们设置值。LocalizedString是在控制面板里显示的字符,可以使用程序里的资源,例如 @%ProgrameFiles%\Profile.exe,-9 。InfoTip是指在控制面板上鼠标划过对应项时出现的浮动提示内容。System.ApplicationName是程序的调用名称,比如说该值为 Laodaoxia.Profile,那么就可以通过“control.exe /name Laodaoxia.Profile”命令来打开控制面板的这个程序。System.ControlPanel.Category是描述应用程序图标在控制面板里出现的位置,其取值范围为0-11,其中0为在所有项目中显示,1为外观和个性化,2硬件和声音,3为网络和Internet,5为系统和安全,6为时钟、语言和区域,7为轻松使用,8为程序,9为用户账户。其它枚举数值不推荐使用,一般为“1,8”。如果要选择多个,可以用英文逗号分割。

第四步,在注册表HKEY_CLASSES_ROOT\CLSID\{GUID}下新建子键DefaultIcon,设置其默认值(Default)为图标资源,例如%ProgramFiles%\Profile.exe,-2 。这里的{GUID}是第一步创建的GUID,请替换这个占位符。在{GUID}下继续创建 Shell\Open\Command 子键,设置 Command的默认值(Default)为 %ProgramFiles%\Profile.exe。熟悉windows和注册表的同学们一看就知道了,这里就是设置当点击控制面板图标的时候,所运行的具体程序路径,可以带参数哟。

接下来,我们打开控制面板,就可以发现图标已经出现在我们期待的位置上了。

更多信息,可以访问微软MSDN的相关文档

香蕉派(Banana Pi)使用红外IR之安装篇

2015年4月6日 2 条评论

在前面的文章中,衣服自己洗分享了香蕉派(Banana Pi)上关于语音合成的经验,这次就说一说红外线的事情。

香蕉派上已经内置了红外接收装置,硬件是已经有了,这篇文章就来说一下软件的安装。

首先运行

sudo apt-get install lirc

lirc 是一个开源的红外控制软件,安装完成后,修改 /etc/lirc/hardware.conf文件内容,如下

REMOTE=”None”
LOAD_MODULES=true
MODULES=”sunxi-ir”
REMOTE_DRIVER=”devinput”
REMOTE_DEVICE=”/dev/input/event0″
REMOTE_LIRCD_ARGS=””
REMOTE_LIRCD_CONF=””
REMOTE_LIRCMD_CONF=””

上面的内容是专为香蕉派调试出来的,其它的比如说树莓派什么的需要做下调整。

接下来就是拿出你的红外遥控器,香蕉派只能识别出部分的遥控器,我的联想Y450送的遥控器就不支持,反而arduino套件里几块钱的反而可以识别出来。要判断是否可以识别出来,可以运行下面的命令,没有的话就安装下

sudo evtest

接着就按键,如果命令行里有反应,就表示可以识别出来这个红外遥控器。

现在就是准备记录遥控器的命令了,先从lirc那里下载一个通用的版本,

wget http://lirc.sourceforge.net/remotes/generic/NEC.conf

然后呢,就是记录按键,运行命令

irrecord -H devinput -d /dev/input/event0 NEC.conf

这里需要说明下步骤,运行完命令后,首先是提示你按回车继续,然后按照提示,让你先输入按键名称,回车,会提示你按下遥控器对应的按键,接着循环往复只到全部输入完,以回车结束输入。

按键名称不能随便乱写,只能是KEY_1 这样可以识别的,如果要获取可用的名称,可以使用 irrecord -l 命令查看。最后NEC.conf文件里的按键部分,类似下面:

ir

各位同学生成的  0x01000C00000001 这样的字符应该有两列,应该删除后面的一列。后面估计是按键松开的编码。

删除后保存,把文件的内容拷贝到 /etc/lirc/lircd.conf文件里,因为有人说lirc编译代码里是识别固定的文件名。

最后,重启lirc,

sudo /etc/init.d/lirc restart

重启完成后,我们可以来验证是否可以了,运行

irw

按下遥控器上刚才配置的按键,如果出现了内容,就表示配置成功了。截图大致是这样的

irw

到此,香蕉派(Banana Pi)使用红外IR的安装就算完成了,后面的部分就是和程序关联应用了。