[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


posted on 2008-04-09 18:32 Freesc Huang 阅读(911) 评论(2) 编辑 收藏

评论

#1楼 2008-11-13 15:48 wwe2003[未注册用户]

为什么我在装有Windows Mobile 6 professional SDK Refresh.msi vs 2008,建立一个mobile项目,使用
pUnknown->QueryInterface(IID_IPoutlookApp, (void **) &pMyPoomApp);
报“->QueryInterface”的左边必须指向类/结构/联合/泛型类型“这个错误?
请帮帮我?谢谢
 回复 引用   

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

公告

These postings are provided "AS IS" with no warranties
and confer no rights.


Locations of visitors to this page

Blog Keywords
Embedded System,Visual Studio,.Net Framework,.Net Compact Framework,.Net Micro Framework,Windows Mobile,Windows Embedded CE,Emulator,WCF,CLR,Design & Pattern,C/C++,C#,Matlab,Algorithms
昵称:Freesc Huang
园龄:4年11个月
粉丝:32
关注:4

统计

  • 随笔 - 197
  • 文章 - 0
  • 评论 - 840

搜索

 

随笔分类(227)

随笔档案(197)

Blogs

Link

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜