|
楼主 |
发表于 2009-2-16 12:46
|
显示全部楼层
开发进程管理器主要用到了WMI技术和DOS技术
WMI是Windows 2K/XP管理系统的核心;对于其他的Win32操作系统,WMI是一个有用的插件。WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object Manager),是一个描述操作系统构成单元的对象数据库,为MMC和脚本程序提供了一个访问操作系统构成单元的公共接口。有了WMI,工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API;相反,操作系统的不同部分都可以插入WMI。
WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源,比如用户可以在远程计算机器上启动一个进程;设定一个在特定日期和时间运行的进程;远程启动计算机;获得本地或远程计算机的已安装程序列表;查询本地或远程计算机的Windows事件日志等等。
一般情况下,在本地计算机上执行的WMI操作也可以在远程计算机上执行,只要用户拥有该计算机的管理员权限。如果用户对远程计算机拥有权限并且远程计算机支持远程访问,那么用户就可以连接到该远程计算机并执行拥有相应权限的操作。
本例中仅仅用到其进程调用部分。也就是GetObject("WinMgmts:").InstancesOf("Win32_Process")
打开EXCEL,按下Alt+F11,然后插入窗体,在窗体中新增一个列表框,再输入以下代码:
Private Sub UserForm_Activate()
' ╔───────────╗
' │ Excel VBA插件 │
' │ 版 本: 1.0 │
' ╚───────────╝
Dim aa(), counts As Byte, i As Integer, xProcesses As Object
Set xProcesses = GetObject("WinMgmts:").InstancesOf("Win32_Process")
counts = xProcesses.Count + 1
i = 2
ReDim Preserve aa(1 To counts, 1 To 5)
aa(1, 1) = "进程": aa(1, 2) = "用户": aa(1, 3) = "进程ID": aa(1, 4) = "内存": aa(1, 5) = "路径"
For Each xProcess In xProcesses
With xProcess
If .GetOwner(user, Domain) = 0 Then
aa(i, 1) = .Caption: aa(i, 2) = user: aa(i, 3) = .ProcessID: aa(i, 4) = .WorkingSetSize / 1024: aa(i, 5) = .ExecutablePath
Else
aa(i, 1) = .Caption: aa(i, 2) = "": aa(i, 3) = .ProcessID: aa(i, 4) = .WorkingSetSize / 1024: aa(i, 5) = .ExecutablePath
End If
End With
i = i + 1
Next
With ListBox1
.MultiSelect = fmMultiSelectSingle
.ColumnCount = 5
.List = aa
.ColumnHeads = False
.ListStyle = fmListStyleOption
End With
End Sub
运行窗即可
本电脑的所有进程,和每个进程的用户、ID、内存消耗、路径等等都在列表框中显示出来了
那么如果是想显示在单元格中呢?
加入以下两句即可
Range("a1:E" & counts) = aa
Range("a:e").EntireColumn.AutoFit
[ 本帖最后由 andysky 于 2011-3-15 08:02 编辑 ] |
-
评分
-
2
查看全部评分
-
|