可以用DOS命令 提供一个WMI需要引用MS WMI 1.X 添加LISTVIEW,两个COMMAND,1个TEXTBOX名称默认Option ExplicitDim objSWbemLocator As SWbemLocator Dim objSWbemServices As SWbemServices Dim objSWbemObjectSet As SWbemObjectSet Dim objSWbemObject As SWbemObject Dim strComputer As String, strNameSpace As String, strClass As String Private Sub Form_Load() ListView1.ColumnHeaders.Clear ListView1.ColumnHeaders.Add , , "名称", 2600 ListView1.ColumnHeaders.Add , , "状态", 1000 ListView1.ColumnHeaders.Add , , "启动类型", 1000 ListView1.ColumnHeaders.Add , , "路径", 2600 ListView1.ColumnHeaders.Add , , "登录身份", 1400 ListView1.ColumnHeaders.Add , , "进程ID", 900 ListView1.ColumnHeaders.Add , , "服务类型", 1400 ListView1.View = lvwReport ListView1.FullRowSelect = True Command1.Caption = "停止" Command2.Caption = "启动"
strComputer = "." '计算机名,.为本机 strNameSpace = "root\cimv2" '指定命名空间为root\cimv2 strClass = "Win32_Service" '指定类为Win32_Service Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") '建立1个WBEM对象的引用指针 Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, strNameSpace) '连接到指定计算机、命名空间的WMI,返回一个对 SWbemServices 对象的引用 RefreshList '刷新服务列表 End Sub'停止指定服务 Private Sub Command1_Click() If ListView1.SelectedItem.SubItems(5) <> 0 Then Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE DisplayName = '" & ListView1.SelectedItem.Text & "'") '查询类中DisplayName属性等于指定值的实例 For Each objSWbemObject In objSWbemObjectSet If objSWbemObject.StopService = 0 Then '停止指定服务 MsgBox ListView1.SelectedItem.Text & "服务已经被停止!" Else MsgBox ListView1.SelectedItem.Text & "服务不能被停止!" End If Next RefreshList '刷新服务列表 End If End Sub'启动指定服务 Private Sub Command2_Click() Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE DisplayName = '" & ListView1.SelectedItem.Text & "'") '查询类中DisplayName属性等于指定值的实例 For Each objSWbemObject In objSWbemObjectSet If objSWbemObject.StartService = 0 Then '启动指定服务 MsgBox ListView1.SelectedItem.Text & "服务已经被启动!" Else MsgBox ListView1.SelectedItem.Text & "服务不能被启动!" End If Next RefreshList '刷新服务列表 End SubPrivate Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem) If Item.SubItems(1) = "Stopped" Then Command1.Enabled = False Command2.Enabled = True Else Command1.Enabled = True Command2.Enabled = False End If
' Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE DisplayName = '" & ListView1.SelectedItem.Text & "'") '查询类中DisplayName属性等于指定值的实例 ' For Each objSWbemObject In objSWbemObjectSet ' If IsNull(objSWbemObject.Description) Then '添加说明 ' TxtDescription.Text = "无" ' Else ' TxtDescription.Text = objSWbemObject.Description ' End If ' Next '将说明显示出来 TxtDescription.Text = ListView1.ListItems("a" & ListView1.SelectedItem.Index - 1).Tag End Sub'刷新服务列表 Sub RefreshList() Dim i As Long ListView1.ListItems.Clear Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass) '通过WQL查询,返回指定类的所有 For Each objSWbemObject In objSWbemObjectSet ListView1.ListItems.Add , "a" & i, objSWbemObject.DisplayName '将服务名称添加到ListView1第一列 ListView1.ListItems("a" & i).SubItems(1) = objSWbemObject.State '将服务的状态添加到ListView1第二列 ListView1.ListItems("a" & i).SubItems(2) = objSWbemObject.StartMode '将服务的启动方式添加到ListView1第三列 ListView1.ListItems("a" & i).SubItems(3) = objSWbemObject.PathName '将服务程序的路径添加到ListView1第四列 ListView1.ListItems("a" & i).SubItems(4) = objSWbemObject.StartName '将服务的登录身份添加到ListView1第五列 ListView1.ListItems("a" & i).SubItems(5) = objSWbemObject.ProcessId '将服务的进程ID添加到ListView1第六列 ListView1.ListItems("a" & i).SubItems(6) = objSWbemObject.ServiceType '将服务类型添加到ListView1第7列 If IsNull(objSWbemObject.Description) Then '添加说明 ListView1.ListItems("a" & i).Tag = "无" Else ListView1.ListItems("a" & i).Tag = objSWbemObject.Description End If i = i + 1 Next Set ListView1.SelectedItem = ListView1.ListItems(1) End Sub
提供一个WMI需要引用MS WMI 1.X
添加LISTVIEW,两个COMMAND,1个TEXTBOX名称默认Option ExplicitDim objSWbemLocator As SWbemLocator
Dim objSWbemServices As SWbemServices
Dim objSWbemObjectSet As SWbemObjectSet
Dim objSWbemObject As SWbemObject
Dim strComputer As String, strNameSpace As String, strClass As String
Private Sub Form_Load()
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , , "名称", 2600
ListView1.ColumnHeaders.Add , , "状态", 1000
ListView1.ColumnHeaders.Add , , "启动类型", 1000
ListView1.ColumnHeaders.Add , , "路径", 2600
ListView1.ColumnHeaders.Add , , "登录身份", 1400
ListView1.ColumnHeaders.Add , , "进程ID", 900
ListView1.ColumnHeaders.Add , , "服务类型", 1400
ListView1.View = lvwReport
ListView1.FullRowSelect = True
Command1.Caption = "停止"
Command2.Caption = "启动"
strComputer = "." '计算机名,.为本机
strNameSpace = "root\cimv2" '指定命名空间为root\cimv2
strClass = "Win32_Service" '指定类为Win32_Service
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") '建立1个WBEM对象的引用指针
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, strNameSpace) '连接到指定计算机、命名空间的WMI,返回一个对 SWbemServices 对象的引用
RefreshList '刷新服务列表
End Sub'停止指定服务
Private Sub Command1_Click()
If ListView1.SelectedItem.SubItems(5) <> 0 Then
Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE DisplayName = '" & ListView1.SelectedItem.Text & "'") '查询类中DisplayName属性等于指定值的实例
For Each objSWbemObject In objSWbemObjectSet
If objSWbemObject.StopService = 0 Then '停止指定服务
MsgBox ListView1.SelectedItem.Text & "服务已经被停止!"
Else
MsgBox ListView1.SelectedItem.Text & "服务不能被停止!"
End If
Next
RefreshList '刷新服务列表
End If
End Sub'启动指定服务
Private Sub Command2_Click()
Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE DisplayName = '" & ListView1.SelectedItem.Text & "'") '查询类中DisplayName属性等于指定值的实例
For Each objSWbemObject In objSWbemObjectSet
If objSWbemObject.StartService = 0 Then '启动指定服务
MsgBox ListView1.SelectedItem.Text & "服务已经被启动!"
Else
MsgBox ListView1.SelectedItem.Text & "服务不能被启动!"
End If
Next
RefreshList '刷新服务列表
End SubPrivate Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
If Item.SubItems(1) = "Stopped" Then
Command1.Enabled = False
Command2.Enabled = True
Else
Command1.Enabled = True
Command2.Enabled = False
End If
' Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass & " WHERE DisplayName = '" & ListView1.SelectedItem.Text & "'") '查询类中DisplayName属性等于指定值的实例
' For Each objSWbemObject In objSWbemObjectSet
' If IsNull(objSWbemObject.Description) Then '添加说明
' TxtDescription.Text = "无"
' Else
' TxtDescription.Text = objSWbemObject.Description
' End If
' Next
'将说明显示出来
TxtDescription.Text = ListView1.ListItems("a" & ListView1.SelectedItem.Index - 1).Tag
End Sub'刷新服务列表
Sub RefreshList()
Dim i As Long
ListView1.ListItems.Clear
Set objSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass) '通过WQL查询,返回指定类的所有
For Each objSWbemObject In objSWbemObjectSet
ListView1.ListItems.Add , "a" & i, objSWbemObject.DisplayName '将服务名称添加到ListView1第一列
ListView1.ListItems("a" & i).SubItems(1) = objSWbemObject.State '将服务的状态添加到ListView1第二列
ListView1.ListItems("a" & i).SubItems(2) = objSWbemObject.StartMode '将服务的启动方式添加到ListView1第三列
ListView1.ListItems("a" & i).SubItems(3) = objSWbemObject.PathName '将服务程序的路径添加到ListView1第四列
ListView1.ListItems("a" & i).SubItems(4) = objSWbemObject.StartName '将服务的登录身份添加到ListView1第五列
ListView1.ListItems("a" & i).SubItems(5) = objSWbemObject.ProcessId '将服务的进程ID添加到ListView1第六列
ListView1.ListItems("a" & i).SubItems(6) = objSWbemObject.ServiceType '将服务类型添加到ListView1第7列
If IsNull(objSWbemObject.Description) Then '添加说明
ListView1.ListItems("a" & i).Tag = "无"
Else
ListView1.ListItems("a" & i).Tag = objSWbemObject.Description
End If
i = i + 1
Next
Set ListView1.SelectedItem = ListView1.ListItems(1)
End Sub
楼主还是请高手指教吧:)