首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA获取正在运行的进程的程序名和任务ID

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

Stack Overflow用户
提问于 2014-10-09 19:26:18
回答 1查看 16.1K关注 0票数 6

如何获取运行中进程的程序名称和任务ID。shell()返回发起进程的任务ID。类似地,我想要获取任务ID和进程的名称,这些进程已经在运行,并且不是由宏创建的。我发现了返回程序名称的代码,但其输出缺少任务I信息:

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

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-09 21:51:15

您可以将SQL更改为读取Select Name, ProcessID FROM Win32_Process

然后在For循环中,在需要的地方使用Process.Properties_("Name").valueProcess.Properties_("ProcessID").value来获取名称。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26277214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档