WINCE和Winows Mobile的开发资源很繁杂,很多人常常弄不清究竟要安装哪些工具才能搭建出合适的开发环境。但是我相信Microsoft SMARTPHONE 2003 SDK和Microsoft POCKETPC 2003 SDK是所有的人都知道的,它们分别为SmartPhone和PocketPC提供了必不可少的支持。以Microsoft SMARTPHONE 2003 SDK为例吧。
SMARTPHONE SDK包含了大量的API,列表如下(选自SDK文档):
Smartphone API |
Description |
ActiveSync |
创建移动应用程序安装和配置,同步服务模块,过滤器和协助访问ActiveSync服务的应用。 |
Bluetooth API |
创建支持蓝牙设备的Mobile应用程序,比如耳机,打印机和其他移动设备。 |
CE Messaging (CEMAPI) |
创建messaging applications |
Configuration Service Providers |
创建可配置各种CSPs(Configuration Service Providers)的应用 |
Connection Manager |
创建可自动管理移动设备网络连接的应用 |
Control API |
在你的移动应用程序中使用Smartphone控件 |
Device Management API |
创建可远程访问移动设备配置管理的应用程序 |
Game API (GAPI) |
创建高性能的实时游戏 |
Home Screen API |
创建用户界面插件 |
HTML Control |
创建可显示HTML文本和嵌入图片,解析XML和绑定URL到别名的应用程序 |
MIDI |
创建可播放MIDI文件的应用程序 |
Object Exchange (OBEX) |
创建对象交换应用,允许移动设备自由的通过无线交换数据 |
Pocket Outlook Object Model (POOM) API |
创建可操作收件箱部件(联系人,日历和任务)的移动应用程序 |
Projects Control |
创建可以和Projects Control交互的应用 |
Remote API (RAPI) |
创建可以同步或控制移动设备的桌面应用程序 |
Speech Recognizer |
为应用程序增加语音识别功能(比如语音拨号) |
Telephony |
创建支持电话和短信的应用程序 |
User Interface |
管理输入面板,增加用户界面元素到你的移动应用程序 |
Vibrate API |
为你的移动应用程序增加震动特性 |
Voice Recorder Control |
创建移动数字录音程序 |
Windows User Interface Controls |
创建将移动扩展合并到标准Microsoft? Windows? CE用户界面控件的应用 |
要创建Desktop<=>Device的桌面同步管理程序,主要就依靠SDK API中的Remote API(RAPI)。RAPI 库由一组函数组成,这些函数可用于通过桌面应用程序管理设备,包括设备的目录文件、设备的注册表和系统信息。废话不多说,我们先来看看如何管理设备中的目录文件。
RAPI提供了一组文件管理的方法(不完全列表,详见SDK文档。):
Function |
Description |
CeCopyFile |
复制文件 |
CeCreateDirectory |
创建目录 |
CeCreateFile |
创建,打开文件、管道、通讯资源、磁盘设备或者控制台。返回一个句柄用来访问对象。 |
CeDeleteFile |
删除文件 |
CeFindAllFiles |
从指定的Windows CE目录中获取所有文件和目录的信息,并且复制到一个包含CE_FIND_DATA结构的数组中 |
CeFindFirstFile |
在目录中查找匹配给定文件名的一个文件 |
CeFindClose |
关闭指定的查找句柄,CeFindFirstFile和CeFindNextFile 函数用这个句柄查找文件 |
CeFindNextFile |
从上一次访问的CeFindFirstFile继续查找文件 |
CeGetFileAttributes |
返回指定文件或目录的属性 |
CeGetFileSize |
获取指定文件的字节大小 |
CeGetFileTime |
获取文件创建日期时间,最后访问日期时间和最后修改日期时间 |
CeMoveFile |
移动(重命名)一个文件或者目录 |
CeReadFile |
从文件指针处读取文件数据 |
CeWriteFile |
从文件指针处写入文件数据 |
首先要说明的是,任何RAPI操作都需要首先初始化与设备的连接:
Function |
Description |
CeRapiInit (RAPI) |
创建Windows CE remote application-programming interface (RAPI). |
[C#.NET] using System; public class RAPI |
|
连接建立后,就可以进行文件操作了。看一个将文件复制到设备的例子:
[C#.NET] using System; public class RAPI // 声明要引用的API |
|
操作完毕后在合适的时候需要断开RAPI连接,使用如下函数(选自SDK文档):
Function |
Description |
CeRapiUninit (RAPI) |
销毁Windows CE remote application-programming interface (RAPI). |
[C#.NET] using System; |
|
文件操作的函数有很多,基本思路都是一样的,在这里就不一一举例了。请注意文件句柄使用以后一定要释放。
我们再看一个取系统信息的例子,RAPI提供了一些取系统信息的函数(选自SDK文档,本人翻译):
Function |
Description |
CeGetSystemInfo |
返回当前系统信息 |
CeGetSystemMetrics |
获取Windows元素的尺寸和系统设置 |
CeGetVersionEx |
获取当前运行的操作系统版本的扩展信息 |
CeGetSystemPowerStatusEx |
获取电池状态 |
CeGlobalMemoryStatus |
获取系统物理内存和虚拟内存信息 |
CeGetStoreInformation |
获取存储器信息并填入STORE_INFORMATION结构 |
[C#.net] public class RAPI
|
RAPI可以做的事情还有很多,比如取注册表信息,提供对 Microsoft ActiveSync 底层功能的访问,运行远程应用程序,文件列表等等。只要仔细阅读SDK文档,相信都不是难事。
作为Mobile设备的桌面管理程序,备份通话记录,联机发送短信等功能是必不可少的。在我刚发现RAPI的时候,以为和前面的例子一样,有现成的函数可以使用。仔细研究以后才发现要复杂的多。相信这是很多朋友的希望实现的功能,所以班门弄斧,简述如下。
RAPI并没有提供通话,SIM卡和短信方面的函数,它们分别包含在SmartPhone SDK的Phone API,SIM Manager和Short Message Service中。然而包含这些API的phone.dll,cellcore.dll和sms.dll都是储存在设备上的,在Windows上运行的程序是无法调用存储在远程设备上的动态连接库的。
我们仍然需要RAPI。虽然它没有提供直接访问通话记录和短信方面的操作,但是它提供了一个特殊的函数:
Function |
Description |
CeRapiInvoke |
使用一种通用的机制执行远程程序 |
CeRapiInvoke的原型如下:
STDAPI_( HRESULT ) CeRapiInvoke( |
CeRapiInvoke将允许我们调用远程设备中的任何API函数!不过不是直接调用,仍然需要对远程API进行一些“包装”。由于时间关系,我将在不久的将来为大家献上关于CeRapiInvoke的详细说明。
原文地址:http://blog.csdn.net/xiaoyong_net/article/details/46924233