VBA获取正在运行的进程的程序名称和任务ID

如何获取正在运行的进程的程序名称和任务ID. shell()返回已启动进程的任务ID.类似地,我想获取已经运行且不是由宏创建的进程的任务ID和名称.我找到了返回程序名称的代码,但其输出缺少任务ID信息:

http://www.vbaexpress.com/forum/archive/index.php/t-36677.html

Sub Test_AllRunningApps()
    Dim apps() As Variant
    apps() = AllRunningApps

    Range("A1").Resize(UBound(apps), 1).Value2 = WorksheetFunction.Transpose(apps)
    Range("A:A").Columns.AutoFit
End Sub

'Similar to: http://msdn.microsoft.com/en-us/library/aa393618%28VS.85%29.aspx
Public Function AllRunningApps() As Variant
    Dim strComputer As String
    Dim objServices As Object, objProcessSet As Object, Process As Object
    Dim oDic As Object, a() As Variant

    Set oDic = CreateObject("Scripting.Dictionary")

    strComputer = "."

    Set objServices = GetObject("winmgmts:\\" _
        & strComputer & "\root\CIMV2")
    Set objProcessSet = objServices.ExecQuery _
        ("SELECT Name FROM Win32_Process", , 48)

    For Each Process In objProcessSet
       If Not oDic.exists(Process.Name) Then oDic.Add Process.Name, Process.Name
    Next

    a() = oDic.keys

    Set objProcessSet = Nothing
    Set oDic = Nothing

    AllRunningApps = a()
End Function
您可以将SQL更改为Select Name,ProcessID FROM Win32_Process

然后在For循环中,获取名称使用Process.Properties _(“Name”).value和Process.Properties _(“ProcessID”).值在需要的地方.

https://stackoverflow.com/questions/26277214/vba-getting-program-names-and-task-id-of-running-processes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:VBA获取正在运行的进程的程序名称和任务ID