首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
首页 | JAVA | C# | VB | VB.NET | C/C++ | delphi | 工程管理 | 其他语言 | 论坛
各大城市软件开发培训、软件人才免费咨询热线:400-700-5807
 您现在的位置: 中国IT实验室 >> 桌面开发 >> VB >> 正文
Visual Basic中调用MSN API函数
来源:ChinaItLab 作者:佚名 时间:2007-4-4

  了解这方面内容的起因是早上有位朋友让我看一段关于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
【责编:Lili】
中国IT教育热线咨询
相关文章
Visual Basic构建线程安全的Singleton…
Delphi中用API实现在MSN的信息提示
C#和Visual Basic中的闭包与对象生存时期…
教你如何用Visual Basic编写病毒…
用Visual Basic轻松实现看图软件…
详解Java规则引擎与其API
用Visual Basic为软件增加注册功能…
用Visual Basic创建多线程应用程序…
用Visual Basic实现undo功能…
Visual Basic编程常见问题及解答…
推荐文章

 精彩友情推荐
·Asp源码 PHP源码
·CGI源码 JSP源码
·建站书籍教程
·服务器软件 .net源码
·建站工具软件
·IDC资讯大全
·机房品质万里行
·IDC托管必备知识
·全国IDC报价
·网站推广优化
最新更新 推荐文章
·框架:J2EE WEB应用架构分析…03-13
·几种VC++数据库开发技术的相对比…03-13
·利用C#实现标注式消息提示窗口03-13
·用C#创建COM对象03-13
·Visual C#多线程参数传递浅析…03-13
·Visual C#多线程参数传递浅析…03-13
·基于HOOK和MMF的Win密码渗透技术11-15
·Visual C++设计超强仿QQ自动伸缩…11-15
·Java SE 6.0实现高质量桌面集成开…11-15
·史玉柱东山再起幕后高人11-15
·用C#创建COM对象09-06
·IT管理十大失误及其对策08-30
·VC中利用MFC设计绘图程序初步08-23
·JAVA中对象创建和初始化过程08-23
·C语言中的位域的使用08-09
·浅谈Java桌面应用程序开发08-09
·C#的前途如何?08-02
·几种VC++数据库开发技术的相对比较07-12
·用Visual C#实现网络封包监视…07-12
·VB.NET中的TextBox控件详解07-12
·VB.NET实现PC与掌上电脑PPC的双向通信07-05