![]() ![]() |
|
VB中调用MSN6.2API函数 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:44:53 文章录入:杜斌 责任编辑:杜斌 | |
|
|
首先当然是引用对象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可用,还是只读的。 |
|
![]() ![]() |