如何按位置终止进程?C#

  • 本文关键字:进程 终止 何按 位置 c#
  • 更新时间 :
  • 英文 :


我敢肯定这真的很容易,但是我已经疯狂地搜索了一段时间,但无法理解。

我已经列出了我想在列表框中删除的所有过程,显示位置,因为您可以从不同位置运行的许多实例,我希望用户能够能够在该列表框中选择任何过程并杀死它。

因为过程名称是相同的,但我希望它根据位置杀死它。

我的代码在列表框中填充的代码就是这样:

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();

最新更新