【发布时间】:2010-10-19 09:28:23
【问题描述】:
我正在开发一个管理联系人信息的桌面应用程序,我希望它能够与 Windows Mobile 设备上的联系人列表同步。我需要了解哪些命名空间/API 才能做到这一点?我更喜欢 .NET 紧凑框架中的一些东西,但我也可以使用 Win32。我正在寻找一种完全独立的方法,即不依赖于单独的应用程序,例如 Outlook。 谢谢
【问题讨论】:
标签: .net windows windows-mobile activesync
我正在开发一个管理联系人信息的桌面应用程序,我希望它能够与 Windows Mobile 设备上的联系人列表同步。我需要了解哪些命名空间/API 才能做到这一点?我更喜欢 .NET 紧凑框架中的一些东西,但我也可以使用 Win32。我正在寻找一种完全独立的方法,即不依赖于单独的应用程序,例如 Outlook。 谢谢
【问题讨论】:
标签: .net windows windows-mobile activesync
ActiveSync 没有托管 API。 ActiveSync SDK 文件夹中有一个名为“stockpor”的示例(默认情况下,它位于 C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Activesync 股票投资组合示例),它为您提供了一个示例如何进行自定义项目同步。
编辑:第二种选择是在设备端使用POOM,并创建一个您可以与之交互的自定义RAPI DLL(不建议尝试直接打开联系人数据库,因为记录格式是不保证在 WinMo 版本中保持不变)。您必须自己解决冲突等,但这样可能更容易获取设备上的联系信息。
【讨论】:
如果您可以使用最新的紧凑框架,那么您可以使用WindowsMobile Class Library。
如果您必须使用旧版本的框架或想要支持旧硬件,您可以使用 Interop 访问本机 ActiveSync API。所有C++ APIs 都可以通过Interop/PInvoke 或COM Interop 访问。一个例子是here。
【讨论】:
还可以考虑查看Microsoft SyncFramework。同步是一个比人们意识到的要困难得多的问题,构建一个满足所有边缘情况的解决方案可能非常困难。 IIRC 他们甚至有从 Outlook 同步到 Pocket PC 的示例。
如果你决定走 RAPI 路线,OpenNETCF 有一个不错的 RAPI C# 库,请参阅here。
【讨论】: