【发布时间】:2020-08-17 17:36:02
【问题描述】:
我想杀死多个进程,但也想保留一些特定的进程。 实际上,我有两个列表框,其中一个包含我要杀死的进程列表。另一个有我想要保留的列表。
例如,我想关闭谷歌浏览器并保持计算器开启。 但是这段代码的问题是,它关闭了所有进程,甚至是 winform 本身。
private void BtnStop_Click(object sender, EventArgs e)
{
Process[] processes = Process.GetProcesses();
foreach (Process p in processes)
{
if (!String.IsNullOrEmpty(p.MainWindowTitle))
{
//ChBlockApp is the name of the list box that i want to kill
ChBlockApp.Items.Add(p.MainWindowTitle);
try
{
// ListAllowed is the name of listbox which i want to keep
if (p.MainWindowTitle != "Avid-Main Page" | p.MainWindowTitle != ListAllowed.items.toString())
{
p.Kill();
}
}
catch (Exception KillExc)
{
MessageBox.Show("Unable to Close the Applicaiton: " + KillExc, "Warning", MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
}
}
我已尝试在此语句中使用检查来保持 Visual Studio 处于打开状态。
if (p.MainWindowTitle != "Avid-Main Page")
{}
但它也不起作用。
This Link 有一些提示,但我要保留多个程序。
【问题讨论】:
-
这条线是怎么回事...
p.MainWindowTitle != ListAllowed.items.toString()?这是检查标题是否等于Items对象名称,即System.Windows.Forms.ListBox+ObjectCollection。这些永远不会匹配。另外,这些属性大写会导致编译失败,items.toString()。 -
我尝试搜索这些项目,但这也不起作用/