作者:绿色风
分类:
时间:2022-08-17
浏览:204
楼主 罗刚君 |
利用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,然后插入窗体,在窗体中新增一个列表框,再输入以下代码:- 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
|
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总版主之一