确切地说标题说什么,在列表框中列出高优先级进程
我需要帮助了解如何列出列表框中的高优先级进程。我能够拉起列表框中的所有进程,但未经过滤。
Process[] allprocs;
private void GetProccesses()
{
allprocs = Process.GetProcesses();
if(Convert.ToInt32(ProcNumLabel.Text) != allprocs.Length)
{
ProcList.Items.Clear();
for(int i=0; i<allprocs.Length; i++)
{
ProcList.Items.Add(allprocs[i].ProcessName);
}
ProcNumLabel.Text = allprocs.Length.ToString();
}
我有一个标签来计算当前列表中的进程数量。高优先级列表框是我想要做的下一步。
补充:
for(int i=0; i<allprocs.Length; i++)
{
ProcList.Items.Add(allprocs[i].ProcessName);
if(allprocs[i].PriorityClass == ProcessPriorityClass.High)
{
HiList.Items.Clear();
HiList.Items.Add(allprocs[i].ProcessName);
}
}
ProcNumLabel.Text = allprocs.Length.ToString();
解决了我的问题。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
GetAllProcesses();
}
private void GetAllProcesses()
{
AllProcBox.Items.Clear();
HiPriBox.Items.Clear();
foreach(System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses())
{
if (p.BasePriority == 13)
{
HiPriBox.Items.Add(p.ProcessName);
}
if (p.BasePriority < 13)
{
AllProcBox.Items.Add(p.ProcessName);
}
}
}
完成工作。
Windows不喜欢 “ProcessPriorityClass.High”
什么是你的问题?如果您不知道如何获得优先级,那么答案就是使用['Process.PriorityClass'](https://msdn.microsoft.com/en-us/library/system.diagnostics.process.priorityclass (v = vs.110).aspx)属性:'if(allprocs [i] .PriorityClass == PriorityClass.High){add to list box}' – Quantic
这是我进入的大方向,在哪里把它放在代码中。 – Nic
@Quantic一旦我添加了代码,就会抛出一个豁免。访问被拒绝。我试着编译运行在管理模式下的EXE,仍然是或多或少相同的事情。 – Nic