[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会话实例:
然后直接访问Contacts属性:
怎么样,简单吧:-)
PS:关于Pocketoutlook的Contact可以参考SDK相应Sample目录下的AddPictureToContact例子.
再来看看VS的C++Smart Device的project中,如何创建一个访问PocketOutlook的会话:
1.首先要通过声明一个IPOutlookApp 接口,并初始化IPOutlookApp指针(注意,这可不是C#,所以初始化是必不可少的):
2.接下来,你需要使用CoInitializeEx API初始化COM(注意:POOM API是基于COM的一组API):
3.使用CoCreateInstance API为你的应用程序创建一个COM对象:
4.接下来你需要使用QueryInterface方法将上面的COM对象和IPOutlookApp接口关联起来
5.最后,你需要使用Logon()方法,登陆Pocket Outlook COM服务:
6.使用创建好的pMyPoomApp取得联系人文件夹(默认编号为10):
7.声明一个泛型PIM项集合,用来放置后来获取的联系人:
8.获取联系人
- -!!!这个确实有点麻烦吧。可以参照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
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对象做你想作的事了
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);
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);
pMyPoomApp->GetDefaultFolder(10, &pFolder);
7.声明一个泛型PIM项集合,用来放置后来获取的联系人:
IPOutlookItemCollection *pGenericItems;
pFolder->get_Items(&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);
}
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 J.D Huang 阅读(1469) 评论(1) 编辑 收藏 举报