Net Compact Framework 基础篇

.Net Compact Framework 基础篇(1

一直就想整理一下所有.Net Compact Framework下的所有托管类使用方法和非托管方法。

写这文章的目的:给那些入门的开发者,以及在需要某些功能的时候可以作为帮助文档来参考。在写这些文章的时候,可能我也是在不断的学习中,对很多知识也不是很了解,各位读者在阅读时,可以将自己的需求和想法告诉我,我会不断扩充和完善它。

文章将先从托管类开始。

开发环境:VS2008,平台:WM6.0 Professional

这篇文章将讲述3个命名空间:
1
Microsoft.WindowsMobile.StatusMicrosoft.WindowsMobile.Status.dll
2
Microsoft.WindowsMobile.TelephonyMicrosoft.WindowsMobile.Telephony.dll
3
Microsoft.Win32mscorlib.dll

1
Microsoft.WindowsMobile.Status2个主要类
SystemState:用于收集和监视系统的很多状态信息,包括日历、邮件、电话、同步、电源等。
RegistryState
:用于监视注册表某键值发生变化
另外,该命名空间还包含6个枚举
ActiveSyncStatus
:设备的同步状态(同步中、没有同步、同步出错)
BatteryLevel
:设备的电池等级(VeryHigh(80%-100%), high(60%-80%), Nomail(20%-60%), Low(10%-20%), VeryLow(0%-10%)
BatteryState
:电池状态(Critical, Low, Nomail
LockStates
:设备锁定的状态(DeviceLock, KeyLock, None, SimLock
SystemProperty
SystemState中用于监视的所有信息。

Demo1

监视电池信息:一旦电池等级发生变化,则触发。

图片1:整个Demo运行后,初始界面。当点击“Current Status”,则显示当前电池等级。


图片2:改变电池等级的方法。


图片3:立即触发事件,这里我定义为显示新的电池等级。


主要代码:

1 private void StatusForm_Load(object sender, EventArgs e)
2          {
3             status = new SystemState(SystemProperty.PowerBatteryStrength);
4             status.Changed +=new ChangeEventHandler(status_Changed);
5
6             regStatus = new RegistryState(@"HKEY_CURRENT_USER/My User Key""My Key Value");
7             regStatus.Changed += new ChangeEventHandler(regStatus_Changed);
8         }

statusSystem Status对象,在Form_Load里初始化,并注册其Change事件,一旦发生改变则触发。

1 this.listBox1.Items.Add("Current Value : " + ((BatteryLevel)SystemState.GetValue(SystemProperty.PowerBatteryStrength)).ToString());

“Current Status”事件中取得电池信息。通过GetValue

1 private void status_Changed(object sender, ChangeEventArgs arg)
2          {
3             this.listBox1.Items.Add("New Value : " + ((BatteryLevel)arg.NewValue).ToString());
4         }

发生变化,则触发的注册事件

Demo2
:监视注册表变化
在移动设备的注册表中,分ClassesRootLocalMachineCurrentUserUsers4个。
Demo
中,监视的键值为:HKEY_CURRENT_USER/My User Key下的My Key Value键的值

点击图3中的“Change Registry”修改键值,图4中则显示监视效果。


代码:

1 private void StatusForm_Load(object sender, EventArgs e)
2          {
3             status = new SystemState(SystemProperty.PowerBatteryStrength);
4             status.Changed +=new ChangeEventHandler(status_Changed);
5
6             regStatus = new RegistryState(@"HKEY_CURRENT_USER/My User Key""My Key Value");
7             regStatus.Changed += new ChangeEventHandler(regStatus_Changed);
8         }

注册一个监视事件

1 private void regStatus_Changed(object sender, ChangeEventArgs args)
2          {
3             this.listBox1.Items.Add("Registry New Value : " + args.NewValue);
4         }

触发事件的处理

2
Microsoft.WindowsMobile.Telephony中只有Phone
该类提供直接弹出电话拨通界面。该类提供Talk方法,该方法传入电话号码(string类型)后,拨号。

代码:

1 private void menuItem5_Click(object sender, EventArgs e)
2          {
3             Phone phone = new Phone();
4             phone.Talk("7272024"true);
5         }

拨打7272024,第二个为是否显示提示信息

5效果:如果选yes,则会显示拨打界面。该参数可以不传,就不显示该界面。




3
Microsoft.Win32
提供RegistryRegistryKey2个类
提供RegistryHiveRegistryKeyPermissionCheckRegistryValueKindRegistryValueOptions四个枚举。
该类使用和完全版Framework下的一致。

Demo中的代码:

 1             RegistryKey key = Registry.CurrentUser;
 2             RegistryKey regMyKey = key.OpenSubKey(SUB_KEY,true);
 3             if (regMyKey != null)
 4              {
 5                 if (regMyKey.GetValue(SUB_KEY_NAME).ToString() == "1")
 6                     regMyKey.SetValue(SUB_KEY_NAME, "0", RegistryValueKind.String);
 7                 else
 8                     regMyKey.SetValue(SUB_KEY_NAME, "1");
 9             }
10             else
11              {
12                 key = key.CreateSubKey(SUB_KEY);
13                 key.SetValue(SUB_KEY_NAME, "1", RegistryValueKind.String);
14             }

注意事项:OpenSubKey方法的第二个参数,不传的话,默认为false,则打开的键是只读的,不能调用SetValue修改键值。

总结:
.Net CF
毕竟提供了有限的托管代码,所有入门的开发人员看完此文章后,希望能有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值