113E博章

       登录 /注册
首页 一算子网 发布
分类 :vb编成

Visual Basic中调用MSN API函数

[ 2008-7-30 22:53:00 | 发表者 : zihe ]

  了解这方面内容的起因是早上有位朋友让我看一段关于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可用,还是只读的。

  当然各个对象可能还有一些相应的方法就不多介绍,我介绍的这些通过对象浏览器就可以看明白,其中还有对象或成员我现在还没学会使用,现在只是大致了解一下,我希望看到这篇文章的人也有了一点初步了解。
上一篇:用Visual Basic实现undo功能   
下一篇:一些关于adodb的知识

浏览模式 : 显示全部 | 评论 : 0 | 排序 | 浏览 : 175
引用 xue
[2008-11-12 20:23:00 | 122.1****** ]
3分鐘學會使用程式發送msn訊息,php篇(一) 
http://rd-program.blogspot.com/2008/11/5msnphp.html

3分鐘學會使用程式發送msn訊息,dotNet C#篇(二) 
http://rd-program.blogspot.com/2008/11/3msn-net-c.html

3分鐘學會使用程式發送msn訊息, Java篇(三) 
http://rd-program.blogspot.com/2008/11/3msn-java.html

我要发表文章
回复标题:  
    Email :
* 请输入验证码
 
统计数据
文章数量 : 300297
评论次数 : 460
访问次数 : 19291235
在线人数 : 2051

附近文章
  • AdobeGolive进阶教程(课程...
  • AdobeGolive进阶教程(课程...
  • AdobeGolive进阶教程(课程...
  • 用Visual Basic为软件增加...
  • 用Visual Basic实现undo功...
  • 一些关于adodb的知识
  • Cell+XML+ADO构建企业级报...
  • 关于Adodb.Stream的使用…...
  • dorado是什么?
  • 我的ATL/ADO编程的曲折经...
热门文章
  • VB调用API函数使窗口保持...
  • SQL查询语言基本教程(2)...
  • 自动上网抓数据的机器人 ...
  • 直接访问WebBrowser控件中...
  • 调用word vb编程
  • 功能强大的SendMessage函...
  • 在VB中调用WindowsAPI的注...
  • 用VB为软件增加注册功能
  • 一种简单的结束无法关闭的...
  • 用VB对磁盘的物理扇区数据...
最新文章
  • 股票技术不准了
  • 2009年元旦放假安排
  • 三国 旬彧VS诸葛亮
  • ASR浮筹比例
  • 杨百万投资股票的三大秘诀...
最近评论
  • xueshanfh
  • 匿名
  • 匿名
  • 匿名
  • 匿名
  • 匿名Martha Jack
  • 匿名
  • Tom Moddy
  • 匿名Jimmy Adams
  • 匿名
 
 

Copyright (C) 一算子网 2006-2008, All Rights Reserved 京ICP备06020154号
服务QQ: 有问题请留言 留言邮箱pinhu530@sohu.com