,VB   工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛,VB
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VB > 正文
Visual Basic编程访问WMI对象
[文章信息]
作者:maqiaos_cn
时间:2005-04-06
出处:VB新纪元
责任编辑:方舟
[文章导读]
WMI技术是微软提供的Windows下的系统管理工具
advertisement
专题教程宝典
【软件应用】
【办公软件】
【图形图像】
【网页制作】
【操作系统】
【网络安全】
【程序开发】
【日报周刊】
【多媒体教程】
· 天极软件应用多媒体教程
· 游戏开发新手入门讲座
· 多媒体系列教程:网页设计制作
· 豪杰超级解霸V9使用手册(下)
· 打造个性化的Windows操作系统
· 图解Photoshop CS2 新功能体验
· 编程中的“拿来主义” 第三方控件推荐
· JBuilder 2005 单元测试体验
· 豪杰超级解霸V9使用手册(上)
· 数码照片后期处理与创意设计
[正文]

1 2  下一页

  WMI(Windows Management Instrumentation)技术是微软提供的Windows下的系统管理工具。通过该工具可以在本地或者管理客户端系统中几乎一切的信息。很多专业的网络管理工具都是基于WMI开发的。该工具在Win2000以及WinNT下是标准工具,在Win9X下是扩展安装选项。本文将介绍如何通过VB编程来访问WMI对象的编程。

  首先来看一个简单的通过WMI获取系统信息的范例,这个范例通过WMI对象获得系统中运行的的进程:

Function Enum1() As String
 Dim WMI

 Set WMI = GetObject("WinMgmts:")
 Set objs = WMI.InstancesOf("Win32_Process")

 For Each obj In objs
  Enum1 = Enum1 + obj.Description + Chr(13) + Chr(10)
 Next
End Function

  在上面的代码中,首先通过 GetObject("WinMgmts:")获得WMI对象,在WMI对象下有很多的子项,在这里我们通过WMI.InstancesOf("Win32_Process")获得系统中所有的进程列表子项。

  下面看一个完整的访问WMI对象的范例,这个范例获得计算机的信息。

  建立一个新工程,在Form1中添加一个TextBox控件以及一个CommandButton控件,在CommandButton的Click事件中写入以下的代码:

Private Sub Command1_Click()
 Dim s, System, item
 Dim i As Integer

 Set System = GetObject("winmgmts:").InstancesOf("Win32_ComputerSystem")
 For Each item In System
  ‘List1.AddItem item.cputype
  s = "Computer Info" & vbCrLf
  s = s & "***********************" & vbCrLf
  s = s & "计算机名称: " & item.name & vbCrLf
  s = s & "状态: " & item.Status & vbCrLf
  s = s & "类型: " & item.SystemType & vbCrLf
  s = s & "生产厂家: " & item.Manufacturer & vbCrLf
  s = s & "型号: " & item.Model & vbCrLf
  s = s & "内存: ~" & item.totalPhysicalMemory \ 1024000 & "mb" & vbCrLf
  s = s & "域: " & item.domain & vbCrLf
  ‘s = s & "工作组" & item.Workgroup & vbCrLf ‘获得工作组和域的选项不能同时用

  s = s & "当前用户: " & item.username & vbCrLf
  s = s & "启动状态" & item.BootupState & vbCrLf
  s = s & "该计算机属于" & item.PrimaryOwnerName & vbCrLf
  s = s & "系统类型" & item.CreationClassName & vbCrLf
  s = s & "计算机类类型" & item.Description & vbCrLf

  For i = 0 To 1 ‘这里假设安装了两个系统
   s = s & Chr(5) & "启动选项" & i & " :" & item.SystemStartupOptions(i) _
     & vbCrLf
  Next i
 Next

 Text1.Text = s
End Sub

  运行程序,点击Command1,在textBox中就可以显示计算机的信息。

  在上面的代码中,程序通过GetObject("winmgmts:")获得WMI对象,然后获得下面的Win32_ComputerSystem子项并通过访问Win32_ComputerSystem对象中的分项获得系统中的信息。

  需要说明的是,并不是所有的系统都支持WMI,在有些系统中无法显示生产厂家等信息。

  现在的计算机以及网络组成十分复杂。例如系统硬件方面就有主板、硬盘、网卡... 。

  软件方面有操作系统、系统中安装的软件、正在运行的进程等等。网络方面有域、工作组等等。利用WMI可以访问上面的全部信息,但是如果向上面一样的利用分项来访问的话会很麻烦。为此,WMI提供了一种类似SQL语句的查询语句,可以通过查询语句获得WMI对象下的子项。

  下面是一个遍历系统中安装的网卡并返回网卡MAC地址的代码:

Private Function MACAddress() As String

 Set objs = GetObject("winmgmts:").ExecQuery( _
  "SELECT MACAddress " & _
  "FROM Win32_NetworkAdapter " & _
  "WHERE " & _
  "((MACAddress Is Not NULL) " & _
  "AND (Manufacturer <> " & _
  "‘Microsoft‘))")

 For Each obj In objs
  MACAddress = obj.MACAddress
  Exit For
 Next obj
End Function

  上面的代码获得WMI对象,然后运行ExecQuery执行一个WMI查询语句获得安装的网卡并返回网卡的MAC地址。


1 2  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
,VB相关内容,VB焦点新闻
  • 用Visual Basic创建多线程应用程序
  • 在VB中调用CHM 帮助的几种方法
  • Visual Basic创建“五星”级控件
  • Visual Basic 的常见问题及解答
  • 让Visual Basic应用程序支持鼠标滚轮
  • FVD刺激高清碟机加速商业化 抢占商机最重要
  • 3家搜索引擎集体诉讼8848 吕春维未敢出席
  • 杨元庆:没有准备不会获批的备用方案
  • 军队信息化诞生新领域 电子军务呼之欲出
  • 世界经济论坛公布信息化程度全球最新排名
  • 2004政务绩效评估:政府门户尚处于发展阶段
  • 甲骨文出资5.15亿美元 意图收购RetekInc
  • 技术并购:帮你突破传统增长的“天花板”
  • ,VBAdvertisement

    天极无线
    经典名曲 华语流行 欧美风情 人声音效 原声大碟
    你好周杰伦-安又琪
    直线-张韶涵
    天边-张韶涵
    看我72变-蔡依林
    乱世佳人-Twins
    全世界下雨-张娜拉
    我们的爱-飞儿乐队
    分手快乐-梁静茹
    爱在西元前-周杰伦
    三万英尺-迪克牛仔
    爱如潮水-张信哲
    爱情宣言-齐秦
    寻找玛依拉-刀郎
    驼铃-刀郎
    老鼠爱大米-杨臣刚
    功夫主题曲
    仙剑主题曲杀破狼
    天下无贼片尾曲
    冲动的惩罚-刀郎
    情人-刀郎
    爱情-莫文蔚
    挪威的森林-伍佰
    奔跑 - 羽泉
    因为爱 - 羽泉
      ·时尚女人圈
    ·经典影视专集
    ·美女秀场
    ·美丽大自然专题
    ·流行金曲
    ·科幻电影特区
    | 最新推荐
    ·你好周杰伦
    ·杀破狼
    ·寻找玛依拉
    ·孤单公园
    ·男人海洋
    | 魔术铃声
    ·少女丰胸
    ·少妇丰胸
    ·减肥魔铃
    ·增高魔铃
    ·美容魔铃

    今日报价查询 更多报价