【发布时间】:2013-01-05 21:09:19
【问题描述】:
我是 WPF 新手,正在尝试构建自己的 Windows 任务管理器。
现在我有一个窗口,在我的机器上运行的所有活动进程都显示在 ListView 中。
现在这是我的问题:我有一个名为 End Process 的按钮。我想从ListView 中选择一个进程,然后按End Process 按钮将其终止。我只是不知道该怎么做。
我已将此代码 (C#) 分配给按钮:
private void End_Process_Click(object sender, RoutedEventArgs e)
{
Process[] procs=Process.GetProcessesByName(ProcessesListView.SelectedItem.ToString());
foreach (Process p in procs)
{
p.Kill();
}
}
【问题讨论】:
-
什么地方做得不对?
-
您的代码会杀死与所选项目具有相同 name 的所有进程。只是为了确保您杀死 right 进程,使用进程 ID 作为标识符。
-
Tnx 快速响应。事实上它什么也没做。好像按钮没有连接任何东西。 (虽然 MessageBox 工作正常)
-
调试器会在方法中遇到断点吗?进程是否真的被杀死了(检查任务管理器)并且你的列表没有更新? “MessageBox 工作正常”是什么意思?我看不到
MessageBox。SelectedItem的ToString值是多少?它可能与您的预期不同,GetProcessesByName没有找到任何东西。 -
1.没有中断,程序运行无异常。 2)该过程没有被杀死(我正在用记事本做这件事)。 3)我提到MessageBox是为了消除按钮没有触发正确方法的可能性,你可以忽略它,它不再存在了。 4) ToString 值可能是问题所在。当我使用“MessageBox”检查它时,我会看到完整的路径:System.Diagnostics......(资源管理器)。您对我如何才能获得没有前缀的 Explorer 名称有任何建议吗?或者我如何使用“ProcessId”? Tnx 很多...