Как получить список запущенных имен процессов, в VB.NET?

Я пытаюсь выяснить, является ли экземпляр приложения (не vb.net) уже работает-потому что я хочу запустить его, но я не хочу запускать его, если он уже работает. Я нашел решение, чтобы проверить, запущен ли процесс:

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

и верните True, если >=1 (или только номер процесса).

моя проблема в том, что это стороннее приложение, и его имя процесса-это не просто имя, но оно содержит номер версии (который я могу не знать при запуске время), а также, кажется, добавить *32 (так, вероятно, *64, если он установлен в x64 ?).

Мне нужно получить список запущенных процессов по имени и проверить, является ли "processname" подстрокой имени. Но мне не удалось получить список имен, только идентификаторы процессов.

3 ответов


мне нужно получить список запущенных процессов по имени и проверить, является ли "processname" подстрокой имени.

вы можете использовать:

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

это будет просматривать все процессы и установить procExists значение True, если какой-либо процесс, который содержит processName существует в текущих исполняемых процессах. Это должно обрабатывать существование неизвестного номера версии, а также *32 что может произойти, если вы работаете на 64-битной ОС (это флаг WOW64, говорящий, что это 32-битный процесс, работающий на 64-битной ОС).


вы можете перебирать запущенные процессы следующим образом:

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

другой способ:

    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()