作者:ARM-WinCE

2010的第一篇Blog,介绍一下WinCE系统声音的定制。说白了,就是设置注册表。WinCE系统启动的开机音乐,点击触摸屏以及键盘输入的按键音,还有系统运行过程中的各种声音其实都是在注册表里面预先设置好的。这里做个简单介绍:

整个WinCE系统声音注册表设置如下:

[HKEY_CURRENT_USER/ControlPanel/Volume]

"Key"=dword:10002

"Screen"=dword:10002

"Mute"=dword:7

"Volume"=dword:99999999

[HKEY_LOCAL_MACHINE/Snd/Scheme]

".DefaultSounds"=mui_sz:"cplmain.cpl,#33123"

".AllSounds"=mui_sz:"cplmain.cpl,#33124"

".NoSounds"=mui_sz:"cplmain.cpl,#33127"

[HKEY_LOCAL_MACHINE/Snd/Event]

".Scheme"=".DefaultSounds"

"EventMask"=dword:FFFFFF

"EventCache"=dword:300

; Schemedescriptions

".NoSounds"=multi_sz:"","","","","","","","","","","","","","","","","","","","",""

".DefaultSounds"=multi_sz:"Asterisk","","critical","default","","exclam",

"infbeg","infend","infintr","","","","question",

"Infbeg","Infend","Infintr","startup","","","",""

".AllSounds"=multi_sz:"Asterisk","Close","critical","default","Empty","exclam",

"infbeg","infend","infintr","MenuPop","MenuSel","OpenProg","question",

"Infbeg","Infend","Infintr","startup","WindMax","WindMin","RecStart","RecEnd"

这些是默认设置,下面分别介绍一下:

1.       音量设置

[HKEY_CURRENT_USER/ControlPanel/Volume]

"Key"=dword:10002          

"Screen"=dword:10002      

"Mute"=dword:7               

"Volume"=dword:99999999

Volume:是设置默认的系统音量的,0为最小,也就是没声音了;0xFFFFFFFF为最大音量

Mute:用来设置Mute类型,0位表示Notifications,1位表示Apps,2位表示Events。默认情况为0x7,也就是全部打开,如果为0,则表示完全Mute。

Screen:表示点击触摸屏的声音音量,从0x1到0x10002表示从最小到最大。

Key:表示按键输入的声音音量,从0x1到0x10002表示从最小到最大。

上面的这些设置在WinCE系统启动后,可以在”Control Panel”->”Volume&Sounds”中看到。

2. 系统声音的策略

[HKEY_LOCAL_MACHINE/Snd/Scheme]

".DefaultSounds"=mui_sz:"cplmain.cpl,#33123"

".AllSounds"=mui_sz:"cplmain.cpl,#33124"

".NoSounds"=mui_sz:"cplmain.cpl,#33127"

这里包含了所有的声音策略,有默认使用的声音策略,打开所有声音的策略和关闭所有声音的策略。如果用户想包含并使用自己声音策略,要先在这里声明。

每一种声音策略都对应到cplmain.cpl中的数字,这个定义可以在/WINCE600/PUBLIC/WCESHELLFE/OAK/CTLPNL/CPLMAIN/cplres.h中找到,如下:

#defineIDS_LOC_DEFAULTSOUNDS            (REBASE+0x163)         对应#33123

#defineIDS_LOC_ALLSOUNDS                    (REBASE+0x164)         对应#33124

#defineIDS_LOC_NOSOUNDS                      (REBASE+0x167)         对应#33127

同样如果用户想定义自己的声音策略,也可以在这里面添加定义。具体的不说了,下面还会提到。

3. 声音策略的定义

[HKEY_LOCAL_MACHINE/Snd/Event]

".Scheme"=".DefaultSounds"

"EventMask"=dword:FFFFFF

"EventCache"=dword:300

; Schemedescriptions

".NoSounds"=multi_sz:"","","","","","","","","","","","","","","","","","","","",""

".DefaultSounds"=multi_sz:"Asterisk","","critical","default","","exclam",

"infbeg","infend","infintr","","","","question",

"Infbeg","Infend","Infintr","startup","","","",""

".AllSounds"=multi_sz:"Asterisk","Close","critical","default","Empty","exclam",

"infbeg","infend","infintr","MenuPop","MenuSel","OpenProg","question",

"Infbeg","Infend","Infintr","startup","WindMax","WindMin","RecStart","RecEnd"

这里定义了使用哪个声音策略,以及事件的屏蔽,还有声音策略的定义。

.Scheme:定义系统使用的声音策略。

EventMask:定义是否隐藏某些声音的事件,总共21个事件,可以选择性的隐藏某个事件,默认情况下,所有的事件都会在控制面板中的声音设置中看到。这里本来想传一张图片,结果发现csdn博客的图片上传功能暂时关闭了。多说两句,在控制面板中,找到声音设置,然后切换到Sounds窗口,在Event下面就可以看到所有的声音事件了。

实际上这些声音事件的定义在/WINCE600/public/wceshellfe/oak/ctlpnl/cplmain/sndschem.cpp中的一个数组idsSoundEvents[NUM_SOUND_EVENTS]中。

EventCache:设置Cache的大小,用于记录弹出窗口及窗口的切换动作。

.NoSounds:具体声音策略的定义

.DefaultSounds:具体声音策略的定义

.AllSounds:具体声音策略的定义

默认情况下,只是定义了这三种声音策略,每一种策略定义了针对21个声音事件分别采用什么样的声音。这里用户也可以添加自己的声音定制策略。所有的声音文件都是.wav文件,存放在/WINCE600/public/wceshellfe/oak/files目录下面。在创建WinCE工程病编译之后,这些.wav文件会被拷贝到编译工程的release目录下面,并被打包到WinCE的image中去。

4. 定制开机音乐

了解了上面的注册表,改变开机音乐就很简单了,对于WinCE系统中有21个声音事件,其中startup事件就是指开机音乐(可以从前面的.AllSounds声音策略定中看到),这个事件对应的是startup.wav文件。

所以最简单的方法就是把你的开机音乐文件命名为startup.wav,然后替换你WinCE工程编译后release目录下面的startup.wav文件,最后重新Makeimg一下,就可以了。

WinCE系统声音定制的更多相关文章

  1. WinCE系统深度定制汇总

    WinCE应用程序崩溃提示框的处理 WinCE6.0多国语言软键盘 定制WinCE6.0标准界面的一种方法 如何禁用WinCE下的沙漏图标 Silent RNAApp.exe for WinCE6.0 ...

  2. 介绍一种很棒的wince 如何替换系统声音的方法

    Topic:介绍一种很棒的wince 如何替换系统声音的方法(作者:Baiduluckyboy) //------------------------------------------------- ...

  3. WIN-CE系统架构

    WIN-CE 系统架构分为素部分:硬件层.OEM 层.操作系统层.应用层 http://hovertree.com/hvtart/bjae/oy9pqb94.htm 硬件层: 由CPU .存储器.I/ ...

  4. IOS调用系统声音(键盘声音)

    #import <AudioToolbox/AudioToolbox.h> AudioServicesPlaySystemSound(1106); 注:括号中为系统声音的id,详见 htt ...

  5. ios开发——实用技术篇Swift篇&系统声音

    系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...

  6. iOS调用系统声音与振动

    如何调用系统声音?[iphone 调用系统铃声与震动功能] 首先要在工程里加入Audio Toolbox framework这个库,然后在需要调用的文件里#import <AudioToolbo ...

  7. iOS 之播放系统声音

    导入框架: 代码: #import <UIKit/UIKit.h> #import <AudioToolbox/AudioToolbox.h> @interface MsgPl ...

  8. Swift - 系统声音服务的使用(播放声音,提醒,震动)

    1,系统声音服务介绍: 系统声音服务提供了一个Api,用于播放不超过30秒的声音.它支持的文件格式有限,具体的说只有CAF.AIF和使用PCM或IMA/ADPCM数据的WAV文件. 但此函数没有提供操 ...

  9. iOS 接收新消息通知调用系统声音 震动

    添加系统框架: #import <AudioToolbox/AudioToolbox.h> 调用震动代码: AudioServicesPlaySystemSound(kSystemSoun ...

随机推荐

  1. TextView的升级版———AutoCompleteTextView

    TextView的升级版---AutoCompleteTextView AutoCompleteTextView顾名知义,可以自动提示的TextView,还可以提示错误信息. 这里介绍基本的使用,能够 ...

  2. 带你深入理解STL之Set和Map

    在上一篇博客带你深入理解STL之RBTree中,讲到了STL中关于红黑树的实现,理解起来比较复杂,正所谓前人种树,后人乘凉,RBTree把树都种好了,接下来就该set和map这类关联式容器来" ...

  3. Dynamics CRM 将实体从高级查找列表中移除不可见

    有时我们不需要将某个实体显示给一般用户比如配置实体,但是这种类型的实体有时候又需要给一般用户读权限ODATA的时候得能读,站点地图上的隐藏比较容易用工具配置下权限即可.其实做到这步一般就可以了但有的客 ...

  4. Description Resource Path Location Type AndroidManifest.xml file missing!

    这个问题又找了好久.国内回答的确不敢恭维. 本回答来自谷歌:   This is build issue. Go to Menu in eclipse, Project>clean then P ...

  5. 04 Spinner 列表选中

    <span style="font-size:18px;"> <?xml version="1.0" encoding="utf-8 ...

  6. Sharepoint2013部署ADFS 报new-sptrustedIdentityTokenIssuer:the trust provider certificate already exist

    在做sharepoint2013的adfs部署时,根据MSDN的步骤到新建身份验证程序时,powershell中报"ADFS new-sptrustedIdentityTokenIssuer ...

  7. hive中使用case、if:一个region统计业务(hive条件函数case、if、COALESCE语法介绍:CONDITIONAL FUNCTIONS IN HIVE)

    前言:Hive ql自己设计总结 1,遇到复杂的查询情况,就分步处理.将一个复杂的逻辑,分成几个简单子步骤处理. 2,但能合在一起的,尽量和在一起的.比如同级别的多个concat函数合并一个selec ...

  8. Java之恋

    初次见面那是一个河北的夏天风随沙散落天涯蝴蝶依旧恋着花回首走过的日子手指和键盘之间的梦想之光已恍如昨日 那年我还是一个刚踏进这个曾经只在地理课本上狂念南稻北麦,南油北花的土地那年你只是我必须要学的编程 ...

  9. Git Bash+EGit在项目中配合使用最常用方法总结(根据场景使用)

    最近在项目中使用Git进行代码管理,之前一直用SVN进行管理,现在谈一谈Git在项目中如何与EGit插件配合使用,高效同步开发. 使用过SVN一段时间的人,初识Git一定感觉很别扭,发现会遇到各种各样 ...

  10. 新手学python(1):解析XML与系统调用

    最近需要做一个项目,完成一批音乐的格式转换.由于之前并未学习过python,所以想借此机会学一下.在介绍自己的学习过程之前,先把项目简要描述一下.目前在一台服务器a上有几十万首原始的MP3音乐文件,现 ...