vb.net 获取进程列表
2016-06-20 14:34
656 查看
这个方法肯定不是最好的,查到的资料还有使用进程快照的,但是不知道为什么vs中不能使用进程的结构体PROCESSENTRY32
Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
以下只是实现了方法而已,优化再考虑。
1.必须是用resume next,否则会弹出当前未运行或者拒绝访问等
On Error Resume Next
processes = System.Diagnostics.Process.GetProcesses()'获取进程列表数组
Label1.Text = "进程数量:" + CStr(processes.Length)
For i = 0 To processes.Length - 1
childProcess.proces = processes(i)
childProcess.Name = childProcess.proces.ProcessName'当前进程的名称
childProcess.ID = childProcess.proces.Id'当前进程的PID
childProcess.Path = childProcess.proces.MainModule.FileName.ToString()'当前进程的路径
parentProcess.ID = ParentID(childProcess.proces.ProcessName)’获取父进程PID
parentProcess.proces = Process.GetProcessById(parentProcess.ID)
parentProcess.Name = parentProcess.proces.ProcessName'父进程名称
parentProcess.Path = parentProcess.proces.MainModule.FileName.ToString()'父进程路径
With ListView1'listview显示所有信息
Dim lItem As System.Windows.Forms.ListViewItem = ListView1.Items.Add(childProcess.Name)
With lItem
.SubItems.Add(CStr(childProcess.ID))
.SubItems.Add(childProcess.Path)
.SubItems.Add(parentProcess.Name)
.SubItems.Add(CStr(parentProcess.ID))
.SubItems.Add(parentProcess.Path)
End With
End With
Next
‘获取当前进程的父进程PID
Private Function ParentID(ByVal pn As String) As Integer
Dim parentd As New PerformanceCounter("Process", "Creating Process ID", pn)
Return parentd.NextValue
End Function
Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
以下只是实现了方法而已,优化再考虑。
1.必须是用resume next,否则会弹出当前未运行或者拒绝访问等
On Error Resume Next
processes = System.Diagnostics.Process.GetProcesses()'获取进程列表数组
Label1.Text = "进程数量:" + CStr(processes.Length)
For i = 0 To processes.Length - 1
childProcess.proces = processes(i)
childProcess.Name = childProcess.proces.ProcessName'当前进程的名称
childProcess.ID = childProcess.proces.Id'当前进程的PID
childProcess.Path = childProcess.proces.MainModule.FileName.ToString()'当前进程的路径
parentProcess.ID = ParentID(childProcess.proces.ProcessName)’获取父进程PID
parentProcess.proces = Process.GetProcessById(parentProcess.ID)
parentProcess.Name = parentProcess.proces.ProcessName'父进程名称
parentProcess.Path = parentProcess.proces.MainModule.FileName.ToString()'父进程路径
With ListView1'listview显示所有信息
Dim lItem As System.Windows.Forms.ListViewItem = ListView1.Items.Add(childProcess.Name)
With lItem
.SubItems.Add(CStr(childProcess.ID))
.SubItems.Add(childProcess.Path)
.SubItems.Add(parentProcess.Name)
.SubItems.Add(CStr(parentProcess.ID))
.SubItems.Add(parentProcess.Path)
End With
End With
Next
‘获取当前进程的父进程PID
Private Function ParentID(ByVal pn As String) As Integer
Dim parentd As New PerformanceCounter("Process", "Creating Process ID", pn)
Return parentd.NextValue
End Function
相关文章推荐
- OpenGL 4.0 VAO VBO 理解
- 去掉搜索引擎中的Powered By Dvbbs.net (动网论坛)
- 去掉搜索引擎中的Powered By Dvbbs.net (动网论坛)
- 去掉搜索引擎中的Powered By Dvbbs.net (动网论坛)
- 去掉搜索引擎中的Powered By Dvbbs.net (动网论坛)
- 【vba】——整合excel数据
- 【VB.net】机房收费系统——充值+存储过程+事务
- vb简单实现运算符优先级的计算器
- VBA窗体右键复制粘贴功能实现
- VirtualBox——CLI——VBoxManage——VBoxHeadless——rdesktop-vrdp
- C#,VB.Net,VB6调用Codesoft打印标签
- VBA excel文件合并
- 高精度乘方二
- 高精度乘方一
- 使用VB6资源文件开发多国语言应用攻略
- vb 中recordset提示对象关闭时不允许操作
- VBS文件运行
- VB中输入个人信息并保存成文档形式
- 冒泡
- VB中输入个人信息并保存成文档形式