调用Windows Mobile自带的控制面板项

本文介绍了一种在WindowsMobile程序中调用系统控制面板的方法,通过启动ctlpnl.exe并传入特定参数来实现不同控制面板项的功能,如闹钟设置、移除程序等。

如何在程序中调用Windows Mobile系统自带的控制面板项呢?经常在论坛或者邮件组看到这样的问题, 比如我们也许在自己的程序中需要添加一个“移除程序”功能,或者需要用户设置一下闹钟,或者需要修改一下其他的系统设置,这时候也许直接调用系统自带的控制面板,要比自己修改注册表自己设计消息存储方式自己设计UI要简单的多。

下面这个类就实现了这一功能:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 class ControlApplet
2 ExpandedBlockStart.gifContractedBlock.gif {
3publicstaticvoidShowApplet(AppletTypeapplet)
4ExpandedSubBlockStart.gifContractedSubBlock.gif{
5ProcessStartInfostartInfo=newProcessStartInfo();
6startInfo.FileName=@"\Windows\ctlpnl.exe";
7startInfo.Arguments=String.Format("cplmain.cpl,{0}",(byte)applet);
8Process.Start(startInfo);
9}

10
11publicstaticvoidShowApplet(AppletTypeapplet,bytetabIndex)
12ExpandedSubBlockStart.gifContractedSubBlock.gif{
13ProcessStartInfostartInfo=newProcessStartInfo();
14startInfo.FileName=@"\Windows\ctlpnl.exe";
15startInfo.Arguments=String.Format("cplmain.cpl,{0},{1}",(byte)applet,tabIndex);
16Process.Start(startInfo);
17}

18
19publicenumAppletType
20ExpandedSubBlockStart.gifContractedSubBlock.gif{
21Contrast,
22Password,
23OwnerInformation,
24Power,
25Memory,
26About,
27Backlight,
28AlignScreen,
29InputMethod,
30SoundsReminders,
31RemovePrograms,
32Menus,
33Buttons,
34TodaySettings,
35PCConnections,
36ModemConnections,
37Clock,
38NetworkConnections,
39RegionalSettings
40}

41
42ContractedSubBlock.gifExpandedSubBlockStart.gifConstantFields#regionConstantFields
43publicconstbyteCPAPPLET_OWNERINFO_IDENTIFICATION=0;
44publicconstbyteCPAPPLET_OWNERINFO_NOTES=1;
45
46publicconstbyteCPAPPLET_MEMORY_MAIN=0;
47publicconstbyteCPAPPLET_MEMORY_RUNNINGPROGRAMS=1;
48
49publicconstbyteCPAPPLET_ABOUT_VERSION=0;
50publicconstbyteCPAPPLET_ABOUT_DEVICEID=1;
51publicconstbyteCPAPPLET_ABOUT_COPYRIGHTS=2;
52
53publicconstbyteCPAPPLET_BACKLIGHT_BATTERY=0;
54publicconstbyteCPAPPLET_BACKLIGHT_EXTERNAL=1;
55
56publicconstbyteCPAPPLET_INPUT_INPUTMEHTOD=0;
57publicconstbyteCPAPPLET_INPUT_WORDCOMPLETION=1;
58publicconstbyteCPAPPLET_INPUT_OPTIONS=2;
59
60publicconstbyteCPAPPLET_SNDANDREMINDERS_VOLUME=0;
61publicconstbyteCPAPPLET_SNDANDREMINDERS_SOUNDS=1;
62publicconstbyteCPAPPLET_SNDANDREMINDERS_REMINDERS=2;
63
64publicconstbyteCPAPPLET_MENUS_STARTMENU=0;
65publicconstbyteCPAPPLET_MENUS_NEWMENU=1;
66
67publicconstbyteCPAPPLET_BUTTONS_PROGRAMBUTTONS=0;
68publicconstbyteCPAPPLET_BUTTONS_UPDOWNCONTROL=1;
69
70publicconstbyteCPAPPLET_MODEM_CONNECTIONS=0;
71publicconstbyteCPAPPLET_MODEM_DIALING=1;
72
73publicconstbyteCPAPPLET_CLOCK_TIME=0;
74publicconstbyteCPAPPLET_CLOCK_ALARMS=1;
75
76publicconstbyteCPAPPLET_RS_REGION=0;
77publicconstbyteCPAPPLET_RS_NUMBER=1;
78publicconstbyteCPAPPLET_RS_CURRENCY=2;
79publicconstbyteCPAPPLET_RS_TIME=3;
80publicconstbyteCPAPPLET_RS_DATE=4;
81#endregion

82}

简单来说就是启动ctlpnl.exe,并传入相应的参数即可,注意第一个参数是表示控制台的哪一项,第二个参数(如果有的话)是表示控制台项目的具体哪个标签页,它为空时默认为第一个标签页。使用的时候如下:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> ControlApplet.ShowApplet(ControlApplet.AppletType.Clock);

效果:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> ControlApplet.ShowApplet(ControlApplet.AppletType.Clock,
ControlApplet.CPAPPLET_CLOCK_ALARMS);

效果:

完整示例在这里下载:

http://files.cnblogs.com/fox23/ControlPanelSample.rar

Enjoy!

相关资料:

Show Control Panel Programmatically

http://www.pocketpcdn.com/articles/controlpanel.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值