我正在为我的模式扫描仪做研究,但我遇到了这个问题。
我看到的模式扫描器需要一个进程的处理程序,但我正在这样做
Process[] P = Process.GetProcessesByName("pName");
没有P.Handle
我去了msdn,但它说它有。但为什么我的不呢?
这两行代码之间有什么区别?
Process P = Process.GetProcessesByName("pName")[0];
Process[] P = Process.GetProcessesByName("pName");
答案 0 :(得分:2)
这将获得名为“pName”的第一个进程:
Process P = Process.GetProcessesByName("pName")[0];
请注意,如果没有,则会导致“index out of bounds”异常。
这会获得名称为“pName”的所有进程的列表(或实际数组):
Process[] P = Process.GetProcessesByName("pName");
请注意,如果没有,这不会导致异常;它只会返回一个空数组。
对于后者,如果你想要第一场比赛,你可以像前者一样对其进行索引:
Process[] P = Process.GetProcessesByName("pName");
if (P.Length > 0)
{
Process process = P[0]; //Get the first one
}
else
{
Log("No such process!");
}
或(我会这样做)使用LINQ:
Process p = Process.GetProcessesByName("pName").FirstOrDefault();
if (p != null)
{
//Do something with the process
}