获取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
    评论
Python可以通过使用第三方库qqbot来获取QQ消息。 首先,我们需要在Python环境中安装qqbot库。可以使用以下命令进行安装: pip install qqbot 接下来,我们需要在QQ上创建一个机器人,并获取到机器人的唯一标识(bot的QQ号)和登陆凭证(bot的QQ密码)。 在Python代码中,我们首先需要导入qqbot库。然后,我们可以使用qqbot的Bot()函数来创建一个机器人实例,并使用该实例的login()方法来登陆。 登陆成功后,我们可以使用onQQMessage()方法对接收到的QQ消息进行处理。在该方法中,我们可以获取到消息的发送者、消息的内容等信息。 下面是一个简单的示例代码,演示了如何使用qqbot库获取QQ消息: ``` from qqbot import QQBotSlot as qqbotslot, RunBot @qqbotslot def onQQMessage(bot, contact, member, content): if content == '你好': bot.SendTo(contact, '你好,我是机器人') if __name__ == '__main__': RunBot() ``` 在上述代码中,我们定义了一个onQQMessage()方法来处理接收到的QQ消息。当接收到的消息内容为“你好”时,机器人会回复“你好,我是机器人”。 最后,我们可以运行这段代码,机器人会自动登陆并开始监听QQ消息。当有新消息来时,onQQMessage()方法会被调用,我们就可以在该方法中对收到的消息进行处理了。 以上就是使用Python获取QQ消息的基本过程。当然,qqbot库还提供了更多的功能和方法,可以根据具体需求进行更复杂的消息处理和交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值