获取Contact的具体内容

首先简单的看看在程序中得到contact内容的方法——从outlook 联系人中选取某个联系人并读出该联系人的信息,比如移动电话。

定义一个choosecontact的结构体对象并初始化,這裡要包一個庫

#pragma comment (lib , "pimstore.l")
下面程序中都有注释了就不多写了。
CHOOSECONTACT   cc = {0};
IContact    *pContact = NULL;


cc.cbSize       = sizeof (cc);
 cc.dwFlags      = CCF_DEFAULT | CCF_CHOOSECONTACTONLY | CCF_ENABLEGAL; 
//get the select item name cc.bstrContactName-->|CCF_RETURNCONTACTNAME
 cc.hwndOwner    = NULL; //hwndDlg;

 // Display the Contact Chooser control and prompt the user to choose a contact.
 CHR( ChooseContact( &cc ));  
到这里可以调出联系人选择的界面,选择某个联系人并存储在CC所指内存中
下面对CC进行操作
//这里首先要区分开是sim联系人还是outlook联系人
if( !cc.oidContactID )
 {  
  //Contact is from SIM.
  wcscpy( szPhoneNo, cc.bstrPropertyValueSelected );
 //.......
  ZeroMemory( szPhoneNo , wcslen(szPhoneNo) );
 }
 else
 {
//如果是outlook联系人则要用POOM的方式来取得内容
//Contact is in local. 
  // Init POOM
  CHR( CoInitializeEx( NULL, 0 ));  

  // Create the POOM COM object.
  CHR( CoCreateInstance( CLSID_Application, NULL, CLSCTX_INPROC_SERVER,
   IID_IPOutlookApp2, (LPVOID *) &pPoom ));
  CBR(NULL != pPoom);

  // Logon to POOM.
  CHR( pPoom->Logon( NULL ));

  SUCCEEDED(pPoom->GetDefaultFolder(olFolderContacts, &pCurrFldr));
  pCurrFldr->get_Items( &pItemCol );
//getitem成功后可以使用其方法来得到其他的项目,见MSDN关于IItem类的描述
  hr = GetItemIndexFromOid( pItemCol, cc.oidContactID, &dwIndex );
  pItemCol->Item( dwIndex + 1, reinterpret_cast<IDispatch**>( &pContact ));

  //from Contacts
 //用IContact方法来获取联系人的内容,该部分在后面详细描述
我已经很郁闷的把那么多都写出来了,就干脆放到下面好了,方便有需要的人copy
HRESULT hr = pContact->get_Oid((LONG*)&oid);
//没一个联系人的项目都会分配一个oid出来,这个oid可以在后面作获取联系人图片的时候用
//对于联系人的具体存储方式,我也是在摸索中,还请高手指点
  pContact->get_AssistantName(&MyContact->AssistantName);
  pContact->get_Body(&MyContact->Body);
  pContact->get_Business2TelephoneNumber(&MyContact->Business2TelephoneNumber);
  pContact->get_BusinessAddressCity(&MyContact->BusinessAddressCity);
  pContact->get_BusinessAddressCountry(&MyContact->BusinessAddressCountry);
  pContact->get_BusinessAddressPostalCode(&MyContact->BusinessAddressPostalCode);
  pContact->get_BusinessAddressState(&MyContact->BusinessAddressState);
  pContact->get_BusinessAddressState(&MyContact->BusinessAddressState);
  pContact->get_BusinessAddressStreet(&MyContact->BusinessAddressStreet);
  pContact->get_BusinessFaxNumber(&MyContact->BusinessFaxNumber);
  pContact->get_CarTelephoneNumber(&MyContact->CarTelephoneNumber);
  pContact->get_BusinessTelephoneNumber(&MyContact->BusinessTelephoneNumber);
  pContact->get_Categories(&MyContact->Categories);
  pContact->get_Children(&MyContact->Children);
  pContact->get_CompanyName(&MyContact->CompanyName);
  pContact->get_Anniversary(&MyContact->dAnniversary);
  pContact->get_Birthday(&MyContact->dBirthday);
  pContact->get_Department(&MyContact->Department);
  pContact->get_Email1Address(&MyContact->Email1Address);
  pContact->get_Email1Address(&MyContact->Email1Address);
  pContact->get_Email1Address(&MyContact->Email3Address);
  pContact->get_FileAs(&MyContact->FileAs);
  pContact->get_FirstName((BSTR*)(&MyContact->FirstName));
  pContact->get_HomeAddressCity(&MyContact->HomeAddressCity);
  pContact->get_HomeAddressCountry(&MyContact->HomeAddressCountry);
  pContact->get_HomeAddressState(&MyContact->HomeAddressState);
  pContact->get_HomeFaxNumber(&MyContact->HomeFaxNumber);
  pContact->get_HomeTelephoneNumber(&MyContact->HomeTelephoneNumber);
  pContact->get_MiddleName(&MyContact->MiddleName);
  pContact->get_MobileTelephoneNumber(&MyContact->MobileTelephoneNumber);
  pContact->get_PagerNumber(&MyContact->PagerNumber);
  pContact->get_RadioTelephoneNumber(&MyContact->RadioTelephoneNumber);
  pContact->get_OtherAddressCity(&MyContact->OtherAddressCity);
  pContact->get_OtherAddressCountry(&MyContact->OtherAddressCountry);
  pContact->get_OtherAddressPostalCode(&MyContact->OtherAddressPostalCode);
  pContact->get_OtherAddressState(&MyContact->OtherAddressState);
  pContact->get_OtherAddressStreet(&MyContact->OtherAddressStreet);
  pContact->get_Spouse(&MyContact->Spouse);
  pContact->get_OfficeLocation(&MyContact->OfficeLocation);
  pContact->get_JobTitle(&MyContact->JobTitle);
  pContact->get_Title(&MyContact->Title);
  pContact->get_Suffix(&MyContact->Suffix);
  pContact->get_WebPage(&MyContact->WebPage);
  pContact->get_AssistantTelephoneNumber(&MyContact->AssistantTelephoneNumber);
  pContact->get_Home2TelephoneNumber(&MyContact->Home2TelephoneNumber);
  pContact->get_LastName(&MyContact->LastName);
  pContact->get_HomeAddressStreet(&MyContact->HomeAddressStreet);
  pContact->get_HomeAddressPostalCode(&MyContact->HomeAddressPostalCode);

关于联系人pic的获取改日再来描述,大体思想也是利用poom的方法来读取!相应的API都可以在IPOutlookApp里面找到

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值