Как получить список запущенных имен процессов, в 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()