WM 通知、声音和提醒

windows mobile 中,系统定义了许多通知类型,在不同的事件(来电、新短信等)时会抛出相应的通知。这里的通知是广义的,其效果包括:播放声音、振动、在屏幕上显示信息(从屏幕下方弹出一个消息框)、LED灯闪烁,所有这些都被认为是通知。

主要信息存在注册表 [HKEY_CURRENT_USER/ControlPanel/Notifications/{GUID}] ]

键/值数据解析:
[HKEY_CURRENT_USER/ControlPanel/Notifications/
{GUID} ]
"Wave"="声音文件具体路径,不用带扩展名,例如Sun CF/Mobile.wav就是Sun CF/Mobile"
"Duration"=指示灯(LED)闪烁时间[以分钟为时间单位,如果=0为无限制]
"Options"=[0为静音],
[=1为播放提示声音],
[=4为指示灯闪烁,关联到"Duration"REG_DWORD值],
[=5即1+4为播放提示声音并带指示灯闪灯]
[=8在屏幕上显示信息],
[=9即1+8,为播放提示声音并在屏幕上显示信息],
[=12=4+8],[=13=1+4+8]
Default="对应发生事件"=如果没有此字符串,不在设定(控制面板‘声音和提示’)中显示选项,但有其它定义

例如[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D663-239C-47a7-9304-0D347F580408}]
"Wave"="lowbatt"
"Duration"=dword:00000000
"Options"=dword:00000009 此处为系统电力不足时候的声音事件
[=9即1+8,为播放提示声音并在屏幕上显示信息],如果为了在系统电力不足的时候,不让屏幕上弹出显示信息,又要播放声音得知电力不足的信息,只要将其数值改为1即可,改为0太“危险”[电力不足,而自己仍然做卡上的程序重要操作而没有保存就麻烦了]



上面的GUID指定了一类通知的物理效果,可以有不同的通知实例,体现在
SHNOTIFICATIONDATA 中的dwID值不同(有点像窗口类和窗口实例的关系)。

联系下面资料看,增加理解。

SHNotificationAdd

This function adds a notification (asynchronously) to the notification tray.

LRESULT SHNotificationAdd(
SHNOTIFICATIONDATA * pndAdd
);
Parameters
pndAdd
Reference to the notification to be added.
Return Values

ERROR_SUCCESS indicates success.

Remarks

This API is called to add a notification to the tray. Notification processing is done asynchronously; that is, this function will return after adding the notification to the tray, and processing will happen on a different thread.(异步方式,添加到通知托盘与显示通知效果是由不同线程处理的)

To customize the physical behaviour for a notification, create a CLSID for the notification class (passed into SHNotificationAdd), and create the registry key:

[HKEY_CURRENT_USER/ControlPanel/Notifications/{CLSID}]
@="Name" ; this is what appears in Settings - if you don't want to allow user customization, don't add this default value
"Options"=dword:1 ; notification flags
"Duration"=dword:0 ; duration in minutes of LED flashing
"Wave"="wavefile" ; default is in the Windows folder. There is no extension on the file

The following table lists the possible values for the Options parameter.

Notification flagValueDescription
NOTIF_SOUND0x00000001Sound notification.
NOTIF_VIBRATE0x00000002Vibrate notification.
NOTIF_FLASH0x00000004ROM notification.
NOTIF_MESSAGE0x00000008Message notification.


引申的应用:更改低电提示的效果。

注册表找到
[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D663-239C-47a7-9304-0D347F580408}]项,
Default值改成任何名字(只要不为空,空的话在设置里不出现此项),比如“LowBattery”。

然后便可以在“设置”--“声音和提醒”--“通知”--“事件”里找到LowBattery项,可以对此类型的通知做更改。
比如:播放声音,在屏幕上显示信息(即弹出通知),震动,指示灯闪烁等。

注册表里的键与控制面板里的选项是对应的。

引申的应用2:弹出一个与低电处理效果类似的通知。

LRESULT SHNotificationAdd(
SHNOTIFICATIONDATA * pndAdd
);

将SHNOTIFICATIONDATA 结构中的clsid项设置成{A877D663-239C-47a7-9304-0D347F580408}对应的GUID值,然后SHNotificationAdd即可。

#define Noti_GUID L"{A877D663-239C-47a7-9304-0D347F580408}"

GUID myGUID;

// Parse the GUID
hr = CLSIDFromString(Noti_GUID, &myGUID);

SHNOTIFICATIONDATA sn = {0};
sn.cbStruct = sizeof(sn);
sn.dwId = SAMPLE_ID_I;
sn.clsid = myGUID;
sn.npPriority = SHNP_INFORM;
sn.csDuration = 5;
sn.pszTitle = TEXT("Title");
sn.pszHTML = TEXT("Test Notification")
sn.grfFlags = SHNF_FORCEMESSAGE;

SHNotificationAdd(&sn));


其他事件声音和提醒

[HKEY_CURRENT_USER/ControlPanel/Notifications/{F55615D6-D29E-4db8-8C75-98125D1A7253}]

"Wave"="Notify"

"Duration"=dword:00000000

"Options"=dword:00000009

Default="无线数据交换: 自动接收"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D65D-239C-47a7-9304-0D347F580408}]

"Wave"="online"

"Duration"=dword:00000003

"Options"=dword:0000000d


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D659-239C-47a7-9304-0D347F580408}]

"Wave"="Infend"

"Duration"=dword:00000000

"Options"=dword:00000001

"AvailableOptions"=dword:00000003

Default="ActiveSync: 结束同步"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D658-239C-47a7-9304-0D347F580408}]

"Wave"="infbeg"

"Duration"=dword:00000000

"Options"=dword:00000000

"AvailableOptions"=dword:00000003

Default="ActiveSync: 开始同步"


[HKEY_CURRENT_USER/ControlPanel/Notifications/Reminders]

"Wave"="Alarm1"

"Duration"=dword:0000000a

"Options"=dword:4000000d

Default="提醒"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{8ddf46e8-56ed-4750-9e58-afc6ce486d03}]

"Wave"="infend"

"Duration"=dword:00000000

"Options"=dword:00000000[=1有声音=0无声音]

"AvailableOptions"=dword:00000003

Default="连接断开"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{8ddf46e7-56ed-4750-9e58-afc6ce486d03}]

"Wave"="infbeg"

"Duration"=dword:00000000

"Options"=dword:00000008

"AvailableOptions"=dword:0000000b

Default="连接成功"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{0D3132C4-1298-469c-B2B8-F28CE2D649D0}]

"Wave"="infbeg"

"Duration"=dword:00000000

"Options"=dword:00000009


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D663-239C-47a7-9304-0D347F580408}]

"Wave"="lowbatt"

"Duration"=dword:00000000

"Options"=dword:00000009


[HKEY_CURRENT_USER/ControlPanel/Notifications/Default]

"LedRefCount"=dword:00000000

"Wave"="default"

"Duration"=dword:00000005

"Options"=dword:0000000d


[HKEY_CURRENT_USER/ControlPanel/Notifications/Sounds]

"Repeat"=dword:00000000


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D65A-239C-47a7-9304-0D347F580408}]

"Wave"="notify"

"Duration"=dword:00000000

"Options"=dword:00000009

Default="收件箱: 新电子邮件"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D65F-239C-47a7-9304-0D347F580408}]

"Wave"="type"

"Duration"=dword:00000000

"Options"=dword:00000009

Default="MSN Messenger: 新消息"


[HKEY_CURRENT_USER/ControlPanel/Notifications/{A877D65E-239C-47a7-9304-0D347F580408}]

"Wave"="online"

"Duration"=dword:00000000

"Options"=dword:00000001

Default="MSN Messenger: 联系人联机"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值