VB 利用WMI进行PNP监视

原创 2007年10月03日 11:23:00

VERSION 5.00
Begin VB.Form frmMain
   BorderStyle     =   1  'Fixed Single
   Caption         =   "PNP监视"
   ClientHeight    =   4350
   ClientLeft      =   45
   ClientTop       =   435
   ClientWidth     =   6990
   Icon            =   "frmMain.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   4350
   ScaleWidth      =   6990
   StartUpPosition =   2  '屏幕中心
   Begin VB.CommandButton cmdExit
      Cancel          =   -1  'True
      Caption         =   "退出(&X)"
      Height          =   375
      Left            =   5880
      TabIndex        =   6
      Top             =   3720
      Width           =   975
   End
   Begin VB.ListBox listUsbExit
      Height          =   3120
      Left            =   2400
      TabIndex        =   2
      Top             =   360
      Width           =   2175
   End
   Begin VB.ListBox listUsbLost
      Height          =   3120
      Left            =   4680
      TabIndex        =   1
      Top             =   360
      Width           =   2175
   End
   Begin VB.ListBox listUsbAdd
      Height          =   3120
      Left            =   120
      TabIndex        =   0
      Top             =   360
      Width           =   2175
   End
   Begin VB.Label lLink
      Caption         =   "http://blog.csdn.net/chenhui530/"
      ForeColor       =   &H00FF0000&
      Height          =   255
      Left            =   1920
      MouseIcon       =   "frmMain.frx":058A
      MousePointer    =   99  'Custom
      TabIndex        =   8
      Top             =   3840
      Width           =   2295
   End
   Begin VB.Label lWelCome
      Caption         =   "欢迎访问我的博客:"
      Height          =   255
      Left            =   120
      TabIndex        =   7
      Top             =   3860
      Width           =   1695
   End
   Begin VB.Label Label2
      Caption         =   "PNP设备退出:"
      Height          =   255
      Left            =   4440
      TabIndex        =   5
      Top             =   120
      Width           =   1095
   End
   Begin VB.Label Label1
      Caption         =   "PNP状态改变:"
      Height          =   255
      Left            =   2280
      TabIndex        =   4
      Top             =   120
      Width           =   1095
   End
   Begin VB.Label lUsbAdd
      Caption         =   "PNP插入:"
      Height          =   255
      Left            =   120
      TabIndex        =   3
      Top             =   120
      Width           =   855
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private Declare Sub InitCommonControls Lib "comctl32.dll" ()

Private WithEvents UsbAdd As SWbemSink
Attribute UsbAdd.VB_VarHelpID = -1
Private WithEvents UsbLost As SWbemSink
Attribute UsbLost.VB_VarHelpID = -1
Private WithEvents UsbExit As SWbemSink
Attribute UsbExit.VB_VarHelpID = -1

Private Sub Form_Initialize()
    InitCommonControls
End Sub

Private Sub cmdExit_Click()
    Unload Me
End Sub

Private Sub Form_Load()
    Dim objSWbemServices As SWbemServices
    Dim strNameSpace As String
    strNameSpace = "root/cimv2"
    Set UsbAdd = New SWbemSink
    Set UsbLost = New SWbemSink
    Set UsbExit = New SWbemSink
    Set objSWbemServices = GetObject("winmgmts://" & "." & "/" & strNameSpace)
    objSWbemServices.ExecNotificationQueryAsync UsbAdd, "SELECT * FROM __instancecreationevent WITHIN 1 WHERE TargetInstance ISA 'Win32_PnPEntity'"
    objSWbemServices.ExecNotificationQueryAsync UsbLost, "SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_PnPEntity'"
    objSWbemServices.ExecNotificationQueryAsync UsbExit, "SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_PnPEntity'"
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    lLink.ForeColor = &HFF0000
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If MsgBox("访问作者博客吗??", vbQuestion + vbYesNo, "提示") = vbYes Then
        Shell "Explorer /s , http://blog.csdn.net/chenhui530/", vbNormalFocus
    End If
    UsbAdd.Cancel
    UsbLost.Cancel
    UsbExit.Cancel
End Sub

Private Sub lLink_Click()
    Shell "Explorer /s , Http://Chenhui.ylmf.cn", vbNormalFocus
End Sub

Private Sub lLink_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    lLink.ForeColor = &HFF00FF
End Sub


Private Sub UsbAdd_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    listUsbAdd.AddItem objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("DeviceID").Value
End Sub


Private Sub UsbLost_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    listUsbLost.AddItem objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("DeviceID").Value
    Dim i As Integer
    For i = 0 To listUsbAdd.ListCount - 1
        If listUsbAdd.List(i) = objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("DeviceID").Value Then
            listUsbAdd.RemoveItem i
            Exit For
        End If
    Next
End Sub


Private Sub UsbExit_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet)
    Dim i As Integer
    For i = 0 To listUsbAdd.ListCount - 1
        If listUsbAdd.List(i) = objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("DeviceID").Value Then
            listUsbAdd.RemoveItem i
            Exit For
        End If
    Next
    listUsbExit.AddItem objWbemObject.Properties_.Item("TargetInstance").Value.Properties_.Item("DeviceID").Value
End Sub

'**************************************************
'包括的方法:1,SetPowerState;2,Reset;3,GetDesciptor
'**************************************************
 

ring3下利用WMI监视进程创建(vc版)

#include "stdafx.h" #define _WIN32_DCOM #include using namespace std; #include #include # pragma...
  • zwfgdlc
  • zwfgdlc
  • 2011年07月18日 11:02
  • 3067

vb.net中使用wmi关闭远程计算机上的进程

最近学习了一点wmi知识,感觉还很好用,只是在结束远程计算机上的程序时花费了一些时间,在网上找了几天资料,发现大多数是用C#写的,要不就是脚本写的,其中有很多代码都把停止服务当做是结束进程,也有很多人...

VB中使用WMI获取系统硬件和软件有关信息

原帖地址:http://blog.csdn.net/ericbai/article/details/474308 WMI是英文Windows Management Instrum...

WMI信息VB脚本生成器.exe

  • 2012年01月15日 15:58
  • 24KB
  • 下载

PDM与Excel利用VB脚本进行互导

1、基础样例表和数据 Excel数据表,样例中有两个sheet。样表及数据如下:  sheet1=> 主题域 表注释 表英文名称 表中文名称 列名 列中文名称 列注释 数据类型 主键 是否为...

利用VB.Net 通过Windows Sockets (Winsock)以及多线程编程进行桌面电脑与Pocket PC间的双向通信

利用VB.Net编程实现PC与掌上电脑PPC间的双向通信 [源文件下载]http://www.cnblogs.com/Risen/category/110585.html本文介绍如何利用VB.Net ...

在VB中利用API进行串口通信

在VB中利用API进行串口通信 一般来说,在VB中编写串口通讯程序,首先考虑到是使用MSComm控件,可是该控件不能设置超时,而且对许多内部的参数进行了隐藏,从而不能满足有些具体的工...

vb.net利用SerialPort进行读取串口操作

mports SystemImports System.IO.PortsPublic Class Form1 Private Sub Form1_Load(ByVal sender As Sys...

Vb.net 利用数组进行组合查询

以前,再用vb6做机房收费系统的时候,组合查询是一个难点。很不容易理解,但是作完之后会有一种特别舒服的感觉。加入三层架构之后的机房收费系统,我只能说,更加的灵活了。       在进行组合查询之前...

Vb.net下,利用数组进行“组合”查询

这几天一直在做机房收费系统中组合查询的那几个窗体。这次选择了利用数组来查询。下面就给大家说一下这个方法,希望大家指正,互相学习。 这里我要讲解的是在三层架构下实现的例子,如果你不了解三层,或者是没有...
  • aboy123
  • aboy123
  • 2012年03月04日 08:06
  • 3322
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB 利用WMI进行PNP监视
举报原因:
原因补充:

(最多只允许输入30个字)