Windows Mobile 建立与短信信箱的连接
2010-06-03 22:56:00 来源:WEB开发网上一部分已经讨论过,如何搭建开发和测试环境,以及如何初始化CEMAPI,再继续这一部分的讨论之前,我们先要澄清几个概念。第一个是会话(Seesion),相信开发网络应用的朋友都不陌生,为了提高通讯效率降低通讯开销,有时候我们需要再目标与本地之间创建一个通道,在通道创建之初,目标与本地先做一些列的响应和请求确认两边的身份,当通道建立以后,目标与本地之间的通讯过程中就不再涉及两边的身份确认,这通常目标与本地之间的建立的通道,通常被称作会话,也就是Session。在使用Cemapi读取短信之前,应用程序也需要与设备上的信息(邮件)系统之间建立一个Session,用以确认双方的身份,这是采用Cemapi读取短信的第一步。第二个概念是短消息(邮件)仓库(MsgStore),在WM中,邮件和短消息是属于一个系统的,Session建立了与这个系统之间的连接,然后必须告诉系统,我们的程序是要对邮件功能进行操作,还是要对短信功能进行操作,通过调用相应的函数(后面会介绍),MsgStore会指向我们需要操作的短信或邮件的仓库上。第三个概念是信箱,或者叫文件夹(Folder),当获得了指向一个具体仓库的MsgStore以后,下一步就需要获取具体的信箱(文件夹)了,比如当程序确定了希望对收件箱还是发件箱进行操作以后,Folder将会指向我们想要操作的具体的信箱。
OK,澄清了这三个概念,就可以进一步讨论,如何建立会话,获取具体信箱了。
1. 会话接口IMAPISession
从mapidefs.h中我们可以看到,通过DECLARE_MAPI_INTERFACE_这个宏使IMAPISession派生自 IUnKnow接口,IUnKnow接口中定义引用技术等与COM有关的基本操作,关于IUnKnow的详细内容大家可以参见COM技术的相关资料。 IMAPISession接口中值得注意的一个函数是GetMsgStoresTable,后面我们将通过调用该函数获取短信(邮件)仓库的列表。
2. 如何创建与MAPI的会话
Cemapi中,我们将使用MAPILogonEx函数建立与短信(邮件)系统的会话,MAPILogonEx在Mapix.h中的定义如下:
typedef HRESULT (STDMETHODCALLTYPE MAPILOGONEX)(
ULONG ulUIParam,
LPTSTR lpszProfileName,
LPTSTR lpszPassword,
ULONG ulFlags,
LPMAPISESSION FAR * lppSession
);
MAPILOGONEX MAPILogonEx;
从定义中可以看出MAPILogonEx函数返回一个HRESULT类型,采用宏FAILED和SUCCESSED可以判断函数是否成功返回。同时,该函数有五个参数,这五个参数分别表示,短信(邮件)系统登陆UI的现实方式以及Session的共享方式,配置文件的文件名,邮箱密码,编码方式(默认)和指向IMAPISession接口指针的指针,对于短信应用程序的开发,前四个参数均无意义,可以直接设置为NULL。如果函数调用成功,我们将会从最后一个参数那里得到短信(邮件)系统的Session指针。调用方法如下:
更多精彩
赞助商链接