Получение имени процесса в VB.NET

Я искал, как найти имя объекта процесса, полученного с помощью System.Diagnostics.Process.GetProcesses (например, для процесса firefox, «Firefox»), и ничего не смог найти. Я пытался использовать MainWindowTitle, но вместо того, чтобы возвращать «Firefox», он возвращает имя текущей вкладки, так как это то, что Firefox называет своим окном. Есть ли способ найти фактическое отображаемое имя процесса?


person ejj28    schedule 23.08.2018    source источник
comment
Класс Process имеет те же члены, что и он. Свойство ProcessName — очевидный кандидат. Если вы действительно хотите, чтобы понятное имя отображалось в диспетчере задач, тогда эта информация не предоставляется классом Process. Не вдаваясь в подробности, я полагаю, что доступ к этой информации можно получить с помощью WMI, который предоставляет много подробной системной информации.   -  person jmcilhinney    schedule 23.08.2018
comment
Да, мне нужны имена, отображаемые в диспетчере задач. посмотрю WMI   -  person ejj28    schedule 23.08.2018
comment
Dim FireFoxProcesses As Process() = Process.GetProcessesByName("firefox"). Основной процесс - единственный, который имеет непустое MainWindowTitle (не обязательно Process(0)). Заголовок окна будет именем (или Заголовком, как вы хотите его назвать) текущей выбранной вкладки.   -  person Jimi    schedule 23.08.2018
comment
Process.GetProcesses() возвращает список всех видимых процессов (тех, у которых есть ProcessName). То же, что Диспетчер задач. Если вы ищете процессы Windowed, это все процессы, которые имеют ненулевое значение MainWindowHandle.   -  person Jimi    schedule 23.08.2018
comment
Ага, ищу названия оконных процессов. Я выяснил, какие процессы являются оконными некоторое время назад, но я до сих пор не могу понять, как получить правильное отображаемое имя, MainWindowTitle близок, но недостаточно хорош.   -  person ejj28    schedule 24.08.2018


Ответы (1)


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

Это может сработать, но не проверено. https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process.processname

person StackDoubleFlow    schedule 23.08.2018