中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 网络与通信
如何获取MSN Messenger的联系人列表?
作者:未知 时间:2005-07-20 14:17 出处:VC知识库 责编:chinaitpower
              摘要:如何获取MSN Messenger的联系人列表?

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


作者:Phiger


下载源代码

一、介绍
  近来,偶然遇到一些朋友由于某些原因问到如何获取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

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

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

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上找到说明。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有