Используйте команды CMD в C # Для отображения списка задач - PullRequest
0 голосов
/ 17 сентября 2018

Мне нужно найти номер PID для процесса, использующего C # и список задач, в CMD.

номер PID необходимо поместить в текстовое поле в форме ac #.

Коддля нахождения номера pid в командной строке это.

for /f "tokens=1,2"  %a in ('  Tasklist /fi "imagename eq notepad.exe" /nh') do @echo %b

Но я не знаю, как интегрировать команды CMD в C # winform.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы можете добиться того же в .NET, используя Process.GetProcessesByName и затем выводя процесс Id:

foreach (var p in Process.GetProcessesByName("notepad"))
{
    Console.WriteLine(p.Id);
}

В качестве альтернативы, если вы действительно хотите использовать окно cmd и захватить вывод, вы можете создать процесс, который будет запускать cmd.exe и передать ему командную строку, которую вы хотите выполнить (добавьте /C в начале, который говорит cmd.exe закрыть окно cmd после запуска). Вы также хотите RedirectStandardOutput, что позволяет вам захватывать выходные данные команды, которая была выполнена. Затем вы можете использовать proc.StandardOutput.ReadLine() для получения каждой строки, которая была возвращена:

var proc = new Process
{
    StartInfo = new ProcessStartInfo
    {
        FileName = "cmd.exe",
        Arguments = "/C for /f \"tokens=1,2\" %a in " + 
            "('Tasklist /fi \"imagename eq notepad.exe\" /nh') do @echo %b",
        RedirectStandardOutput = true,
        UseShellExecute = false,
    }
};

proc.Start();
proc.WaitForExit();

while (!proc.StandardOutput.EndOfStream)
{
    Console.WriteLine(proc.StandardOutput.ReadLine());
}
0 голосов
/ 17 сентября 2018

Вы, безусловно, можете запустить окно командной строки (консоль) и записать его потоки stdout и stderr, чтобы получить данные, а затем проанализировать их и показать в элементе управления Windows Form

в то же время, обычно в таком случае класс класса Process стандартной платформы .NET Framework используется для получения любой информации о работающем процессе на машине с Windows,

посмотрите на этот метод в MSDN, например: Process.GetProcessesByName или любой другой метод класса Process, так что вы можете сделать это без запуска какой-либо команды в любом окне консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...