RSS
热门关键字:
当前位置 : 主页>编程开发>软件工程>列表

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

来源:我要研发网 作者: 时间:1970-01-01 点击:



源码下载

字串4

  一、介绍 字串7

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

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

  先来简单介绍一下MessengerAPI.Messenger都包含哪些接口,MSN6.0Messenger Object 实现接口有:IMessenger
IMessenger2
IMessenger3
DMessengerEvents
IMessengerWindow
IMessengerConversationWnd
IMessengerContact
IMessengerContacts
IMessengerService
ImessengerServices
IMessengerGroup
IMessengerGroups

  这里列举联系人列表只要用到 Imessenger、IMessengerContact、ImessengerContact 这些接口就可以了,如果你还对其他接口有兴趣话,有关 MSN Messenger 资料可以从微软 MSDN 网站 Messenger 专题找到: 字串7

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winmessenger/winmessenger/messenger_entry.asp二、实现

字串7

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

  首先,在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支持方便之处。 字串7

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

字串6

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

字串8


字串6

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

字串4

  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;
      }
      // 显示名称 字串8
      _bstr_t bstrtFriendlyName = MSNMessagerContact->GetFriendlyName();
      // 登录名称
      _bstr_t bstrtSigninName = MSNMessagerContact->GetSigninName();
    }
  以上代码我想也不用多说,采用智能指针,先取得IMessenger Interface,然后通过IMessenger Interface取得IMessengerContacts Interface,这是一个ContactCollection,之后就是取出每个ImessengerContact了 。 字串7

  三、结束语 字串1

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

字串2

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
相关文章