【问题标题】:How do I get list of Process Names running, in VB.NET?如何在 VB.NET 中获取正在运行的进程名称列表?
【发布时间】:2012-06-15 17:01:15
【问题描述】:

我试图找出一个应用程序(不是 vb.net)的实例是否已经在运行 - 因为我想启动它,但如果它已经在运行,我不想启动它。我找到了一个检查进程是否正在运行的解决方案:

Dim proc As Integer = Process.GetProcessesByName(ProcessName).GetUpperBound(0) + 1 

如果 >=1(或只是进程号)则返回 True。

我的问题是,这是一个第三方应用程序,它的进程名不仅仅是一个名字,它还包含一个版本号(我可能在运行时不知道),而且它似乎还添加了一个 *32 (如果它安装在 x64 中,那么可能是 *64 ?)。

我需要按名称获取正在运行的进程列表,并测试“processname”是否是该名称的子字符串。 但我没有成功获得名称列表,只有进程 ID。

【问题讨论】:

    标签: vb.net process


    【解决方案1】:

    我需要按名称获取正在运行的进程列表,并测试“processname”是否是该名称的子字符串。

    你可以使用:

    Dim procExists as Boolean = Process.GetProcesses().Any(Function(p) p.Name.Contains(processName))
    

    这将查看所有进程,如果当前正在执行的进程中存在包含 processName 的任何进程,则将procExists 值设置为True。这应该处理未知版本号的存在以及如果您在 64 位操作系统上运行可能出现的 *32(这是 WOW64 标志,表示它是在 64 位操作系统上运行的 32 位进程)。

    【讨论】:

    • 我已经尝试过了,但是“Any”不起作用。感谢您解释 *32。
    • @emptyheaded 只需在文件顶部添加“Import System.Linq”,Any 就可以了。这是一种 LINQ 扩展方法 (msdn.microsoft.com/en-us/library/bb534972.aspx)
    • @Reed Copsey:不应该是 'p.ProcessName.Contains' 而不是 p.Name.Contains 吗?而且我不确定 .Any 是否不区分大小写。否则一些额外的 .ToUpper 将有助于搜索进程名?
    【解决方案2】:

    你可以像这样循环运行进程:

    For Each p As Process In Process.GetProcesses()
       Debug.WriteLine(p.ProcessName)
    Next
    

    【讨论】:

      【解决方案3】:

      另一种方式:

          Dim psList() As Process
          Try
              psList = Process.GetProcesses()
      
              For Each p As Process In psList
                  Console.WriteLine(p.Id.ToString() + " " + p.ProcessName)
              Next p
      
          Catch ex As Exception
              Console.WriteLine(ex.Message)
          End Try
          Console.ReadKey()
      

      【讨论】:

        【解决方案4】:

        刚刚尝试了 Reed Copesy 发布的答案,这似乎改变了,对我有用的是:

        Dim procExists as Boolean = Process.GetProcesses().Any(Function(p) p.ProcessName.Contains(processName))
        

        还可以通过名称检索数组并直接检查是否包含在进程数组中:

        Process.GetProcessesByName(processName).Length > 0
        

        谢谢!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-26
          相关资源
          最近更新 更多