调用Windows Mobile自带的控制面板项
如何在程序中调用Windows Mobile系统自带的控制面板项呢?经常在论坛或者邮件组看到这样的问题, 比如我们也许在自己的程序中需要添加一个“移除程序”功能,或者需要用户设置一下闹钟,或者需要修改一下其他的系统设置,这时候也许直接调用系统自带的控制面板,要比自己修改注册表自己设计消息存储方式自己设计UI要简单的多。
下面这个类就实现了这一功能:
1
class ControlApplet
2
{
3
public static void ShowApplet(AppletType applet)
4
{
5
ProcessStartInfo startInfo = new ProcessStartInfo();
6
startInfo.FileName = @"\Windows\ctlpnl.exe";
7
startInfo.Arguments = String.Format("cplmain.cpl,{0}", (byte)applet);
8
Process.Start(startInfo);
9
}
10
11
public static void ShowApplet(AppletType applet, byte tabIndex)
12
{
13
ProcessStartInfo startInfo = new ProcessStartInfo();
14
startInfo.FileName = @"\Windows\ctlpnl.exe";
15
startInfo.Arguments = String.Format("cplmain.cpl,{0},{1}", (byte)applet,tabIndex);
16
Process.Start(startInfo);
17
}
18
19
public enum AppletType
20
{
21
Contrast,
22
Password,
23
OwnerInformation,
24
Power,
25
Memory,
26
About,
27
Backlight,
28
AlignScreen,
29
InputMethod,
30
SoundsReminders,
31
RemovePrograms,
32
Menus,
33
Buttons,
34
TodaySettings,
35
PCConnections,
36
ModemConnections,
37
Clock,
38
NetworkConnections,
39
RegionalSettings
40
}
41
42
Constant Fields
82
}
class ControlApplet2
{3
public static void ShowApplet(AppletType applet)4
{5
ProcessStartInfo startInfo = new ProcessStartInfo();6
startInfo.FileName = @"\Windows\ctlpnl.exe";7
startInfo.Arguments = String.Format("cplmain.cpl,{0}", (byte)applet);8
Process.Start(startInfo);9
}10
11
public static void ShowApplet(AppletType applet, byte tabIndex)12
{13
ProcessStartInfo startInfo = new ProcessStartInfo();14
startInfo.FileName = @"\Windows\ctlpnl.exe";15
startInfo.Arguments = String.Format("cplmain.cpl,{0},{1}", (byte)applet,tabIndex);16
Process.Start(startInfo);17
}18

19
public enum AppletType20
{21
Contrast,22
Password,23
OwnerInformation,24
Power,25
Memory,26
About,27
Backlight,28
AlignScreen,29
InputMethod,30
SoundsReminders,31
RemovePrograms,32
Menus,33
Buttons,34
TodaySettings,35
PCConnections,36
ModemConnections,37
Clock,38
NetworkConnections,39
RegionalSettings40
}41

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

ControlApplet.ShowApplet(ControlApplet.AppletType.Clock,
ControlApplet.CPAPPLET_CLOCK_ALARMS);
ControlApplet.CPAPPLET_CLOCK_ALARMS);
效果:

完整示例在这里下载:
https://files.cnblogs.com/fox23/ControlPanelSample.rar
Enjoy!
相关资料:

浙公网安备 33010602011771号