您的位置:首页 > 编程语言 > VB

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: