2017年计算机二级office操作题:2017年计算机二级C++辅导实例编程:如何获取MSNMessenger的联系人列表?

副标题:2017年计算机二级C++辅导实例编程:如何获取MSNMessenger的联系人列表?

时间:2023-09-07 04:44:01 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。


  如何获取MSN Messenger的联系人列表?

  一、介绍

  近来,偶然遇到一些朋友由于某些原因问到如何获取MSN的联系人列表,可能大家或多或少都知道MSN Messenger提供一些接口来调用。可能不清楚哪些接口以及这些接口如何使用,本文就通过获取联系人列表这个简单例子简单介绍一下。

  MSN Messenger6.0提供一些MSN Messenger的COM接口,通过这些COM接口,可以添加很多辅助,比如取联系人列表,联系人上下线通知,发送邮件,即使消息,自动回复即使消息等,这里我只介绍一下如何得到你的联系人列表,如果有朋友想了解更多功能,可以继续探讨,其实使用方法都类似。

  先来简单介绍一下MessengerAPI.Messenger都包含哪些接口,MSN6.0的Messenger Object 实现的接口有:

  IMessenger

  IMessenger2

  IMessenger3

  DMessengerEvents

  IMessengerWindow

  IMessengerConversationWnd

  IMessengerContact

  IMessengerContacts

  IMessengerService

  ImessengerServices

  IMessengerGroup

  IMessengerGroups

  二、实现

  1、如果你使用的是VB那编程就简单多了:

  首先,在Project菜单选择References,添加Messenger API Type Library,然后,几行代码就可以了:

  ''Messenger Object

  Dim MSNMessenger As New MessengerAPI.Messenger

  ''Contacts Collection

  Dim MSNMyContacts As IMessengerContacts

  ''One Contact

  Dim MSNMyContact As IMessengerContact

  Set MSNMyContacts = MSNMessenger.MyContacts

  ''Enumerating the contact

  For Each MSNMyContact In MSNMyContacts

  MsgBox MSNMyContact.FriendlyName & MSNMyContact.SigninName

  Next

  这就完成了联系人列表,这就是VB对Automation支持的方便之处。

  2、如果用VC就要复杂一点,但代码也比较简单,问题是我们没有微软提供的.h文件,也没有.tlb,文件。

  (1) 如何取得MSN的.tlb文件,有些用Import “msnmsgr.exe”,但得到的.tlh文件中根本没有Messenger对象,我们知道能在 VB中使用肯定需要Type Library,所以我们可以利用Visual Studio Tools 中的OLEView来生成一个.tlb文件 (如果谁有更好的方式请告之),本文源码中已经生成好了.tlb文件,大家直接用就可以了。

  (2) 有了.tlb文件,接下来的工作就很简单了:

  IMessengerPtr     MSNMessager = NULL;

  IMessengerContactsPtr MSNMessagerContacts = NULL;

  IMessengerContactPtr  MSNMessagerContact = NULL;

  HRESULT hr = MSNMessager.CreateInstance(__uuidof(Messenger));

  if (FAILED(hr))

  {

  AfxMessageBox("Create the Messenger object failed!");

  return;

  }

  MSNMessagerContacts = MSNMessager->GetMyContacts();

  if (NULL == MSNMessagerContacts)

  {

  AfxMessageBox("the Messenger object GetMyContacts failed!");

  return;

  }

  long lCount = MSNMessagerContacts->GetCount();

  for (int i = 0; i < lCount; i++)

  {

  MSNMessagerContact = MSNMessagerContacts->Item(i);

  if (NULL == MSNMessagerContact)

  {

  AfxMessageBox("the MSNMessagerContacts GetContact failed!");

  break;

  }

  // 显示名称

  _bstr_t bstrtFriendlyName = MSNMessagerContact->GetFriendlyName();

  // 登录名称

  _bstr_t bstrtSigninName = MSNMessagerContact->GetSigninName();

  }

  以上代码我想也不用多说,采用智能指针,先取得IMessenger Interface,然后通过IMessenger Interface取得IMessengerContacts Interface,这是一个Contact的Collection,之后就是取出每个ImessengerContact了 。

  三、结束语

  MSN Messenger Client的COM接口提供了很多功能,这只是其中一小部分,可以通过这些 COM接口添加一些MSN Messenger的辅助功能.这些接口都可以从MSDN Web Site上找到说明。

2017年计算机二级C++辅导实例编程:如何获取MSN Messenger的联系人列表?.doc

本文来源:https://www.wddqw.com/ey5n.html