国产18禁黄网站免费观看,99爱在线精品免费观看,粉嫩metart人体欣赏,99久久99精品久久久久久,6080亚洲人久久精品

2017年計算機(jī)二級C++輔導(dǎo)實例編程:如何獲取MSN Messenger的聯(lián)系人列表?

時間:2017-01-20 15:10:00   來源:無憂考網(wǎng)     [字體: ]

  如何獲取MSN Messenger的聯(lián)系人列表?

  一、介紹

  近來,偶然遇到一些朋友由于某些原因問到如何獲取MSN的聯(lián)系人列表,可能大家或多或少都知道MSN Messenger提供一些接口來調(diào)用?赡懿磺宄男┙涌谝约斑@些接口如何使用,本文就通過獲取聯(lián)系人列表這個簡單例子簡單介紹一下。

  MSN Messenger6.0提供一些MSN Messenger的COM接口,通過這些COM接口,可以添加很多輔助,比如取聯(lián)系人列表,聯(lián)系人上下線通知,發(fā)送郵件,即使消息,自動回復(fù)即使消息等,這里我只介紹一下如何得到你的聯(lián)系人列表,如果有朋友想了解更多功能,可以繼續(xù)探討,其實使用方法都類似。

  先來簡單介紹一下MessengerAPI.Messenger都包含哪些接口,MSN6.0的Messenger Object 實現(xiàn)的接口有:

  IMessenger

  IMessenger2

  IMessenger3

  DMessengerEvents

  IMessengerWindow

  IMessengerConversationWnd

  IMessengerContact

  IMessengerContacts

  IMessengerService

  ImessengerServices

  IMessengerGroup

  IMessengerGroups

  二、實現(xiàn)

  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

  這就完成了聯(lián)系人列表,這就是VB對Automation支持的方便之處。

  2、如果用VC就要復(fù)雜一點,但代碼也比較簡單,問題是我們沒有微軟提供的.h文件,也沒有.tlb,文件。

  (1) 如何取得MSN的.tlb文件,有些用Import “msnmsgr.exe”,但得到的.tlh文件中根本沒有Messenger對象,我們知道能在 VB中使用肯定需要Type Library,所以我們可以利用Visual Studio Tools 中的OLEView來生成一個.tlb文件 (如果誰有更好的方式請告之),本文源碼中已經(jīng)生成好了.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了 。

  三、結(jié)束語

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