Показать все запущенные приложения в ListBox и убить их по нажатию кнопки в C # - PullRequest
0 голосов
/ 06 мая 2018

Я хочу собирать процессы в списке следующим образом:

app.exe otherapp.exe

но я просто получаю:

System.Diagnostics.Process (app.exe) System.Diagnostics.Process (otherapp.exe)

Мой код:

    private void Form1_Load(object sender, EventArgs e)
    {
        Process[] prs = (Process.GetProcesses());

        foreach (Process pr in prs)
        {
            listBox1.Items.Add(Convert.ToString(pr));
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {
        Process[] prs = Process.GetProcesses();

        string item = Convert.ToString(listBox1.SelectedItem);

        //item.Kill();
    }

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

Вы можете использовать тот же код только небольшое изменение

 listBox1.Items.Add(Convert.ToString(pr.ProcessName));

Короче говоря

  private void Form1_Load(object sender, EventArgs e)
{
 Process[] prs = (Process.GetProcesses());

             foreach (Process pr in prs)
             {

                listBox1.Items.Add(Convert.ToString(pr.ProcessName));
             }
}

Выход:

enter image description here

Причина:

Вы просто должны были использовать свойство ProcessName в экземпляре

0 голосов
/ 06 мая 2018

Сначала вы должны сохранить имя процесса:

    foreach (Process process in Process.GetProcesses())
    {
        listBox1.Items.Add(process.ProcessName);
    }

После этого вы можете использовать имя, чтобы получить процесс (ы) и убить его / их:

    Process[] processes = Process.GetProcessesByName(listBox1.SelectedItem.ToString());

    foreach (Process process in processes)
    {
        process.Kill();
    }

См. https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx для получения дополнительной информации о классе процесса.

...