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 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述