MohammedZr Ответов: 2

Как получить идентификатор запущенного процесса с помощью C# .NET


Hello i need a help in a code the code is use to get a ID Of a Running Process

Like Taskmgr for example i tried to use GetProcessByName GetProcessByID and the to functions are useless not useful Please Help me i want to now the Pid of a Running Process using C# .net 


it returns
 
Process: System.Linq.Enumerable+WhereArrayIterator`1[System.Diagnostics.Process]
 ID: System.Linq.Enumerable+WhereArrayIterator`1[System.Diagnostics.Process]


any Help !? Thanks ..

What I have tried:

<pre>
            Process[] processlist = Process.GetProcesses();

            var pid2 = from theprocess in processlist where theprocess.ProcessName = "taskmgr" select theprocess ;

2 Ответов

Рейтинг:
12

RickZeeland

Видеть: Процесс.Метод GetProcessesByName (System.Диагностика) | Microsoft Docs[^]
В массиве возвращенных данных Процесс компоненты, которые вы можете получить .Идентификатор собственность, см.: Класс Процесса (System.Диагностика) | Microsoft Docs[^]

Если вы не знаете правильного имени, попробуйте:

using System.Diagnostics;
...
Process[] processlist = Process.GetProcesses();

foreach (Process p in processlist)
{
    Console.WriteLine("Process: {0} ID: {1}", p.ProcessName, p.Id);
}


MohammedZr

помогите мне пожалуйста мне нужно теперь pid запущенного процесса

Dave Kreskowiak

Он пытался помочь вам, но ни он, ни я не собираемся писать код для вас.

Вы не понимаете, что получаете массив объектов процесса обратно из GetProcesses.

Проблема, с которой вы столкнулись, заключается не в извлечении процессов. Дело в том, что вы, по-видимому, не знаете, как работать с массивами.

Рейтинг:
0

Chris Copeland

В этом есть несколько недостатков. Во-первых, вы должны перебирать pid2 переменная не закончена processlist

Во-вторых, ты пытаешься писать pid2 к консоли, но это перечисляемый набор. Вам нужно распечатать информацию о самом процессе (посмотрите на Процесс[^] страница в документации).

foreach (Process process in pid2)
{
  Console.WriteLine("Process: {0} ID: {1}", process.ProcessName, process.Id);
  Console.ReadLine();
}

Помните, что вы можете положиться на intellisense в Visual Studio, чтобы помочь вам. И помните, если вы получаете результаты, которых не ожидаете, используйте отладчик, чтобы пройти через ваш код и выяснить, что не так.


MohammedZr

хорошо я понимаю это спасибо я ценю это но проблема в том что мне нужно получить pid процесса запущенного по имени процесса можете ли вы помочь мне бросить его и спасибо agin

MohammedZr

кто-нибудь может помочь, пожалуйста?

Chris Copeland

Как объяснил Рикзиленд ниже, вы можете использовать Id свойство а Process объект для извлечения pid.

MohammedZr

вот так я не работаю
var Pr = процесс.Id(Process.GetProcessesByName("taskmgr"));
я урожденный пенсионер pid от имени процесса вы его получаете не могли бы вы объяснить форму пожалуйста
я новичок в Си#
как это

var ProcessID = from Processes in processlist where process.ProcessName=("mgr") выберите процессы;

Dave Kreskowiak

Это не работает, потому что вы предполагаете, что GetProcessesByName возвращает один объект процесса. Это не. Он всегда будет возвращать массив объектов процесса. Вы пытаетесь получить PID из массива, а не из объектов процесса в массиве.