1

我想以另一种形式关闭用户在 ListView 框中选择的进程。ListView 框使用复选框来选择要关闭的进程。不幸的是,我不知道如何将检查的进程转换为进程....有什么帮助吗?

public void Form4_Load(object sender, EventArgs e)
{
    Process[] prs = Process.GetProcesses();
    listView1.Items.Clear();
    foreach (Process proces in prs)
    {
        if (!string.IsNullOrEmpty(proces.MainWindowTitle))
            listView1.Items.Add(proces.MainWindowTitle);
    }
    foreach (Process PRC in listView1.CheckedItems)
    {
        \\Idk what to put here.
    }
4

1 回答 1

0

为了杀死一个进程,您需要它的名称或进程 ID,因此更改上面添加进程的代码,ListView1如下所示:

private void Form4_Load(object sender, EventArgs e)
        {
            Process[] prs = Process.GetProcesses();
            listView1.Items.Clear();
            foreach (Process proces in prs)
            {
                if (!string.IsNullOrEmpty(proces.MainWindowTitle))
                {
                    ListViewItem item = new ListViewItem();
                    item.Tag = proces.Id; //it will be used to kill this process
                    item.Text = proces.MainWindowTitle;
                    listView1.Items.Add(item);
                }
            }
        }

注意 tag 字段,我们稍后将使用它来杀死选定的进程。现在循环所有 selected ListViewItems,从 tag 字段中获取相应的进程 id 并使用 获取对进程的引用System.Diagnostics.Process.GetProcessById。此方法返回一个 Process 对象,该对象公开了一种Kill方法,使用该方法可以停止该对象引用的进程。

private void button1_Click(object sender, EventArgs e)
        {
            foreach (ListViewItem list in listView1.CheckedItems)
            {
                Process p = System.Diagnostics.Process.GetProcessById(Convert.ToInt32(list.Tag));
                if (p != null)
                    p.Kill();
            }
    }
于 2011-08-18T02:01:55.370 回答