ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > Excel VBA > 用Excel开发进程管理器

用Excel开发进程管理器

作者:绿色风 分类: 时间:2022-08-17 浏览:140
楼主
罗刚君
利用VBA、DOS知识设计一个WINDOWS程序管理器
包括查看/关闭

安装方法:
1.下载、解压
2.打开“安装.exe”,输入1并回车
使用方法:
打开Excel,从菜单中打开“进程管理”进程信息.gif
 

进程管理器.rar
2楼
罗刚君
开发进程管理器主要用到了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,然后插入窗体,在窗体中新增一个列表框,再输入以下代码:
  1. Private Sub UserForm_Activate()
  2. '   ╔─────────────────────────╗
  3. '   │ Excel      VBA插件     │
  4. '   │   版  本:  1.0       │
  5. '   ╚─────────────────────────╝

  6.     Dim aa(), counts As Byte, i As Integer, xProcesses As Object
  7.     Set xProcesses = GetObject("WinMgmts:").InstancesOf("Win32_Process")
  8.     counts = xProcesses.Count + 1
  9.     i = 2
  10.     ReDim Preserve aa(1 To counts, 1 To 5)
  11.     aa(1, 1) = "进程": aa(1, 2) = "用户": aa(1, 3) = "进程ID": aa(1, 4) = "内存": aa(1, 5) = "路径"
  12.     For Each xProcess In xProcesses
  13.         With xProcess
  14.             If .GetOwner(user, Domain) = 0 Then
  15.                 aa(i, 1) = .Caption: aa(i, 2) = user: aa(i, 3) = .ProcessID: aa(i, 4) = .WorkingSetSize / 1024: aa(i, 5) = .ExecutablePath
  16.             Else
  17.                 aa(i, 1) = .Caption: aa(i, 2) = "": aa(i, 3) = .ProcessID: aa(i, 4) = .WorkingSetSize / 1024: aa(i, 5) = .ExecutablePath
  18.             End If
  19.         End With
  20.         i = i + 1
  21.     Next
  22.     With ListBox1
  23.         .MultiSelect = fmMultiSelectSingle
  24.         .ColumnCount = 5
  25.         .List = aa
  26.         .ColumnHeads = False
  27.         .ListStyle = fmListStyleOption
  28.     End With
  29. End Sub
运行窗即可
本电脑的所有进程,和每个进程的用户、ID、内存消耗、路径等等都在列表框中显示出来了
那么如果是想显示在单元格中呢?
加入以下两句即可

  1. Range("a1:E" & counts) = aa
  2. Range("a:e").EntireColumn.AutoFit
3楼
罗刚君
对于关闭指定的进程,则需要用DOS命令:taskkill
在VBA用,利用SHELL调用这个DOS命令即可

其语法下:
引用:
4楼
罗刚君
要取得taskkill命令的语法,可以调用以下语句完成: AA.png
 
5楼
罗刚君
补充一句,弹出对话框时,如果对话框内容太多,MSGBOX不可能完成,MSGBOX有字符长度限制,而改用WScript语言中的Popup方法可以突破此屏障。以下代码中的对话框文字就大大超出了MSGBOX能显示的有效范围。
Sub taskkill语法()
  With CreateObject("WScript.Shell")
    .Popup .Exec("cmd.exe /c taskkill/?").StdOut.ReadAll, , "语法提示"
  End With
End Sub
6楼
wangqilong1980
无论如何也要顶一下喽,收了好好用。
7楼
水星钓鱼
神作,学习下。
8楼
aczkk
鉴定完毕!

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap