vb.net 获取进程列表

本文介绍了一种在Visual Basic中获取当前运行的所有进程及其父进程的方法,通过使用System.Diagnostics命名空间并结合PerformanceCounter类来获取父进程ID,进而得到父进程的详细信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个方法肯定不是最好的,查到的资料还有使用进程快照的,但是不知道为什么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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值