[VB]VB中調用MSN 6.2 API函數__函數

來源:互聯網
上載者:User

VB中調用MSN 6.2 API函數

  瞭解這方面內容的起因是早上有位朋友讓我看一段關於MSN開發程式,現在無法運行,我開啟工程發現是針對4.7編寫的,而他的電腦安裝的6,2,因為我也用6.2所以我在VB中查看了一下,發現是缺少Messenger Type Library。但是多了Messenger API Type Library,可能是做為Messenger Type Library的替代,但是發現它的功能不如以前的Messenger Type Library 全面,起碼我現在就發現它不能修改本地的MyFriendlyName,不明白為什麼把它弄成唯讀,MyStatus是可寫。

  下面簡單用VB距離說明怎麼調用它:

  首先當然是引用對象Messenger API Type Library了。

  然後聲明一個對象MessengerAPI.Messenger:

Private WithEvents oMSN As MessengerAPI.Messenger

  我們需要的東西都在這裡邊,簡單介紹幾個:

  MyContacts:IMessengerContacts 對象
  MyFriendlyName: 當前的暱稱
  MyGroups: IMessengerGroupss對象
  MyPhoneNumber:返回電話號碼
  MyProperty:現在沒有使用
  MyServiceId :返回Service id應該是{9b017612-c9f1-11d2-8d9f-0000f875c541}]
  MyServiceName:返回Service name應該是 .NET Messenger Service
  MySigninName:返回當前的簽名,eMail地址
  MyStatus:返回目前狀態,MISTATUS枚舉值

  其實區域屬性和通過PrimaryService得到的一樣

  做幾個簡單的示範:

  首先是登陸示範,使用MessengerAPI.Messenger的 SignIn 或者AutoSignin方法:

Public Sub SignIn(ByVal bAuto As Boolean, Optional ByVal sSignInName As String,   Optional ByVal sPassword As String)  On Error GoTo ErrorHandle  If bAuto = True Then   oMSN.AutoSignin  Else   ManualSignIn:   oMSN.SignIn 0, sSignInName, sPassword  End If  Exit Sub ErrorHandle:  Dim MConstants As MSGRConstants  MConstants = err.Number  If MConstants = MSGR_E_FAIL Then   GoTo ManualSignIn  ElseIf MConstants = MSGR_E_ALREADY_LOGGED_ON Then   '已經登陸  End If End Sub

 
  擷取全部使用者列表:

  通過Messenger的MyContacts對象(它是唯讀)

  它其實就是一個IMessengerContacts對象,而IMessengerContacts類又是IMessengerContact類的一個集合,在IMessengerContact中儲存連絡人資訊。

  因此可以這樣遍曆連絡人。

Dim oContacts As IMessengerContacts Dim oContact As IMessengerContact Dim iCount As Integer Dim i As Long Set oContacts = oMSN.MyContacts iCount = oContacts.Count For i = 0 To iCount - 1  Set oContact = MsgrContacts.Item  List1.AddItem MsgrContact.FriendlyName & vbTab & "(" & getStatusDesc(MsgrContact.Status) & ")" Next

  getStatusDesc函數用來返回狀態文本描述:

Private Function getStatusDesc(eStatus As MISTATUS) As String  Select Case eStatus   Case MISTATUS_AWAY    getStatusDesc = "走開了"   Case MISTATUS_BE_RIGHT_BACK    getStatusDesc = "馬上回來"   Case MISTATUS_BUSY    getStatusDesc = "在忙碌"   Case MISTATUS_IDLE    getStatusDesc = "在發獃"   Case MISTATUS_INVISIBLE    getStatusDesc = "隱藏"   Case MISTATUS_LOCAL_CONNECTING_TO_SERVER    getStatusDesc = "正在連結的伺服器"   Case MISTATUS_LOCAL_DISCONNECTING_FROM_SERVER    getStatusDesc = "從伺服器斷開"   Case MISTATUS_LOCAL_FINDING_SERVER    getStatusDesc = "正在搜尋伺服器"   Case MISTATUS_LOCAL_SYNCHRONIZING_WITH_SERVER    getStatusDesc = "正在和伺服器同步"   Case MISTATUS_OFFLINE    getStatusDesc = "離線"   Case MISTATUS_ON_THE_PHONE    getStatusDesc = "在接電話"   Case MISTATUS_ONLINE    getStatusDesc = "線上"   Case MISTATUS_OUT_TO_LUNCH    getStatusDesc = "外出就餐"   Case MISTATUS_UNKNOWN    getStatusDesc = "未知"  End Select End Function

  擷取組列表:

  方法同擷取連絡人,只是換了一下對象.
Dim oGroups As IMessengerGroups Dim oGroup As IMessengerGroup Set oGroups = oMSN.MyGroups For Each oGroup In oGroups  List1.AddItem oGroup.Name Next

  下面就是將組和使用者關聯起來:

  明白上面的方法,這個很容易實現,IMessengerGroup類的對象中含有IMessengerContact類對象的集合。

Dim oGroups As IMessengerGroups Dim oGroup As IMessengerGroup Dim oContacts As IMessengerContacts Dim oContact As IMessengerContact Set oGroups = oMSN.MyGroups For Each oGroup In oGroups  Set oContacts = oGroup.Contacts  For Each oContact In oContacts   List1.AddItem oGroup.Name & " " & oContact.SigninName  Next Next

  在介紹一下服務:

  也是用樣道理:
Dim oServices As IMessengerServices Dim oService As IMessengerService Set oServices = oMSN.Services Set oService = oServices.PrimaryService MsgBox oService.MyFriendlyName & getStatusDesc(oService.MyStatus) & oService.MySigninName & oService.ServiceId & oService.ServiceName

  我現在怎麼覺得PrimaryService的意義不大,IMessengerServices中就一個PrimaryService可用,還是唯讀。

  當然各個對象可能還有一些相應的方法就不多介紹,我介紹的這些通過物件瀏覽器就可以看明白,其中還有對象或成員我現在還沒學會使用,現在只是大致瞭解一下,我希望看到這篇文章的人也有了一點初步瞭解。     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.