Windows Embedded CE和Windows Mobile下ActiveSync开发
背景
用过Windows Mobile的人大概都有使用USB线链接手机到PC的经历,这一般由ActiveSync来完成软件功能。ActiveSync在Windows Embedded CE以及Windows Mobile 和PC的互操作中扮演重要的角色,使用了ActiveSync,PC就可以检查 Windows Embedded CE以及Windows Mobile 设备的硬件,操作系统,内存等等版本信息,访问和修改注册表,增删改文件和传输文件,甚至调用设备的DLL。本文讲述ActiveSync的开发。
什么是ActiveSync
ActiveSync是微软开发的数据同步程序,使得PC可以同步Windows Embedded CE以及Windows Mobile 等设备上的文档,邮件,日历安排,联系人列表等。同时ActiveSync提供手工文件传输和同步功能,可以在PC上安装和卸载Windows Embedded CE以及Windows Mobile 等设备上程序。在Vista之后,ActiveSync被Windows Mobile Device Center所取缔。
什么是RNDIS
RNDIS(Remote NDIS)是另外一种比较常用的通过USB连接Windows Embedded CE设备和PC的规范。
Remote NDIS Drivers for USB
图转自http://www.microsoft.com/whdc/device/network/ndis/rmndis.mspx
从开发者的角度可以把RNDIS理解为IP over USB,C和Windows Embedded CE链接了以后会分配IP地址,可以基于这个IP网来进行开发。RNDIS广泛应用于USB设备中,例如ADSL设备一般支持RNDIS,这样连上USB就能对设备进行配置了。
下载
ActiveSync只能用于XP,当前为4.5版本,下载链接如下:Download Microsoft ActiveSync 4.5
如果使用Vista,请使用Windows Mobile Device Center,目前版本为6.1,下载链接如下:Download Windows Mobile Device Center 6.1
对于ActiveSync的开发,我使用了 OpenNETCF Desktop Communication Library 库,这是一个基于The MIT License (MIT)的开源库。先到下面链接下载。http://rapi.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29281
接口
ActiveSync的功能封装在OpenNETCF Desktop Communication Library 库的ActiveSync类。
方法
ActiveSync类通过ConnectNow()和DisconnectNow()对设备进行链接,断开。
rapi.ActiveSync.ConnectNow();
rapi.ActiveSync.ShowCommSettings();
rapi.ActiveSync.DisconnectNow();
ShowCommSettings()显示当前设备链接状态。
属性
当设备链接时候或者断开的时候,也可以配置自动启动程序。
rapi.ActiveSync.AutoConnect = true;
rapi.ActiveSync.AutoStartOnConnect.Add(@"C:\WINDOWS\notepad.exe");
rapi.ActiveSync.AutoStartOnDisconnect.Add(@"C:\WINDOWS\regedit.exe");
设置属性 AutoConnect 为true,当设备链接的时候,activesync自动链接。设置AutoStartOnConnect和AutoStartOnDisconnect,当链接或者断开的时候,自动启动配置的程序。
事件
通过订阅Active和Disconnect事件来处理链接状态变更消息。
rapi.ActiveSync.Active += new ActiveHandler(ActiveSync_Active);
rapi.ActiveSync.Disconnect += new DisconnectHandler(ActiveSync_Disconnect);
void ActiveSync_Disconnect()
{
labelActiveSync.Text = "Device disconnected";
}
void ActiveSync_Active()
{
labelActiveSync.Text = "Device connected";
}
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。