[CF.Skills]托管代码中使用PocketOutlook轻松查找和添加联系人

摘要:尽管我有时候对C#和这种基于框架的开发模式很厌倦,或者说.NET Framework多少让人觉得有点束缚,但是有时候你不得不感叹它让我们的开发变得多么轻松。比如这里提到的访问Windows Mobile的联系人。
keywords
POOM,windows mobile,PocketOutlook,Contacts,.NET Compact Framework,C#,C++

前两天有朋友问及Poom的问题,其实SDK下面有一些例子已经写得比较清楚了。在Windows Mobile 5以后,有了 Microsoft.WindowsMobile.PocketOutlook 命名空间。这让POOM编程变得十分简单,同样是获取联系人,我们将会看到使用VC++和VC#的不同。下面来看看使用托管代码C#是如何实现的。
首先创建一个Outlook会话实例:
OutlookSession mySession  =   new  OutlookSession();

然后直接访问Contacts属性:
int  index  =   0 ;
Contact contact 
=   new  Contact();

// 当前联系人为零则添加一个联系人
if  (session.Contacts.Items.Count  <=   0 )
{
contact.FirstName 
= "Contact";
contact.LastName 
= "With Picture";
session.Contacts.Items.Add(contact);
}

else
{
 contact 
= session.Contacts.Items[0];
}

// 接着你可以对你的Contact对象做你想作的事了

怎么样,简单吧:-)

PS:关于Pocketoutlook的Contact可以参考SDK相应Sample目录下的 AddPictureToContact例子.

再来看看VS的C++Smart Device的project中,如何创建一个访问PocketOutlook的会话:
1.首先要通过声明一个IPOutlookApp 接口,并初始化IPOutlookApp指针 (注意,这可不是C#,所以初始化是必不可少的):
IPOutlookApp  * pMyPoomApp  =  NULL;

2.接下来,你需要使用CoInitializeEx API初始化COM (注意:POOM API是基于COM的一组API):
CoInitializeEx(Null, 0 );

3.使用CoCreateInstance API为你的应用程序创建一个COM对象:
CoCreateInstance(CLSID_Application, NULL, CLSCTX_INPROC_SERVER,
                IID_IUnknown, (
void   ** & pUnknown);

4.接下来你需要使用QueryInterface方法将上面的COM对象和IPOutlookApp接口关联起来
pUnknown -> QueryInterface(IID_IPoutlookApp, ( void   ** & pMyPoomApp);

5.最后,你需要使用Logon()方法,登陆Pocket Outlook COM服务:
pMyPoomApp -> Logon(NULL);

6.使用创建好的pMyPoomApp取得联系人文件夹(默认编号为10):
IFolder  * pFolder;
pMyPoomApp
-> GetDefaultFolder(10,  & pFolder);

7.声明一个泛型PIM项集合,用来放置后来获取的联系人:
IPOutlookItemCollection  * pGenericItems;
pFolder
-> get_Items( & pGenericItems)

8.获取联系人
IContact  *  pContact = NULL;
int  len;
pGenericItems
-> get_Count( & len);
for  ( int  i  = 0  ; i  <  len; i ++ {
    pGenericItems
->Item(i, &pContact);
}


  - -!!!这个确实有点麻烦吧。可以参照WM5下的 PoomMaster的例子,在这个目录下:
??\Program Files\Windows Mobile 5.0 SDK\Samples\PocketPC\CPP\Win32\Poommaster

在以后的文章中,会详细的介绍Pocketoutlook的编程。最后,得感谢 .NET CF团队的工作,是他们让.NET 程序员的开发变得简单高效:-)

Enjoy!

©Freesc Huang
 黄季冬<fox23>@HUST
 2008/4/9


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值