了解这方面内容的起因是早上有位朋友让我看一段对于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:
bgColor=#e1e1e1 border=1>
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
步骤:
bgColor=#e1e1e1 border=1>
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中
保留
联络人信息 。
因此
可以这样遍历
联络人 。
bgColor=#e1e1e1 border=1>
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函数用来返回状态文本
形容:
bgColor=#e1e1e1 border=1>
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
|
猎取组列表:
步骤同猎取
联络人,只不过换了一下对象.
bgColor=#e1e1e1 border=1>
Dim oGroups As IMessengerGroups
Dim oGroup As IMessengerGroup
Set oGroups = oMSN.MyGroups
For Each oGroup In oGroups
List1.AddItem oGroup.Name
Next |
下面便是将组和消费者关联起来:
清楚上面的
步骤,这个很方便实现,IMessengerGroup类的对象中含有IMessengerContact类对象的
集中 。
bgColor=#e1e1e1 border=1>
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 |
在介绍一下服务:
也是用样
情理:
bgColor=#e1e1e1 border=1>
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可用,还是只读的 。
固然各个对象可能还有一些相应的
步骤就不多介绍,我介绍的这些通过对象阅读器就
可以看清楚,其中还有对象或成员我现在还没学会
使用,现在只不过
大体了解一下,我
盼望看到这篇文章的人也有了丝毫初步了解 。