我敢肯定这真的很容易,但是我已经疯狂地搜索了一段时间,但无法理解。
我已经列出了我想在列表框中删除的所有过程,显示位置,因为您可以从不同位置运行的许多实例,我希望用户能够能够在该列表框中选择任何过程并杀死它。
因为过程名称是相同的,但我希望它根据位置杀死它。
我的代码在列表框中填充的代码就是这样:
public void getProcess()
{
Process[] localByName = Process.GetProcessesByName("lmgrd");
foreach (Process proc in localByName)
{
lb_instances.Items.Add(proc.MainModule.FileName);
}
}
输出看起来像这样:
c: folder1 lmgrd.exe
c: folder2 lmgrd.exe
c: folder3 lmgrd.exe
我想要
的线Process.Kill(lb_list.SelectedItem.TosString())
非常感谢,
每个过程都由一个数字唯一识别,您应该将其存储在此方面。自从我做Windows Dev以来已经有一段时间了,但是您可以做这样的事情。让我们创建一个以存储我们数据的类:
public class ProcessInfo
{
public int ProcessId { get; set; }
public string Name { get; set; }
}
现在,当我们以新格式获得流程列表时:
var processes = Process.GetProcessesByName("lmgrd")
.Select(p => new ProcessInfo
{
ProcessId = p.Id,
Name = p.MainModule.FileName
});
我们需要设置ListBox
以使用新类的正确属性:
lb_instances.ValueMember = "ProcessId";
lb_instances.DisplayMember = "Name";
一口气将我们的过程添加到ListBox
(无需在此处循环):
lb_instances.Items.AddRange(processes );
现在要选择一个过程时,请执行此操作:
var processId = (int)lb_instances.SelectedValue;
Process.GetProcessById(processId).Kill();