C# C中进程名称的标题#
我想通过输入程序的标题找到进程的名称。例如,如果我键入“Google Chrome”,我希望控制台打印“Chrome”(进程名称在任务管理器中的外观)。谢谢进程对象有一个名为MainWindowTitle的属性,它很可能就是您所指的属性。System.Diagnostics命名空间是流程对象所在的位置。然后可以使用Process.GetProcesses()检索系统上运行的所有进程。然后遍历该列表,查找窗口标题与要查找的值匹配的列表,中断循环,并输出proc.ProcessNameC# C中进程名称的标题#,c#,C#,我想通过输入程序的标题找到进程的名称。例如,如果我键入“Google Chrome”,我希望控制台打印“Chrome”(进程名称在任务管理器中的外观)。谢谢进程对象有一个名为MainWindowTitle的属性,它很可能就是您所指的属性。System.Diagnostics命名空间是流程对象所在的位置。然后可以使用Process.GetProcesses()检索系统上运行的所有进程。然后遍历该列表,查找窗口标题与要查找的值匹配的列表,中断循环,并输出proc.ProcessName foreac
foreach(Process proc in Process.GetProcesses())
{
if(proc.MainWindowTitle == "Google Chrome")
{
Console.WriteLine(proc.ProcessName);
break;
}
}
Process
中没有属性,与Task Manager Process Description中一样,您可以使用FileVersionInfo
找到EXE的FileDescription
var processes = Process.GetProcesses().ToList();
foreach (var p in processes)
{
try
{
var description = FileVersionInfo.GetVersionInfo(p.MainModule.FileName).FileDescription;
if (description == "Google Chrome")
{
Console.WriteLine(p.ProcessName);
break;
}
}
catch (Exception ex)
{
// You will get Access is denied exception for some processes when accesses `MainModule`
}
}
注意:以管理员身份运行应用程序进程对象有一个名为MainWindowTitle的属性,该属性很可能就是您所引用的属性。System.Diagnostics命名空间是流程对象所在的位置。然后可以使用Process.GetProcesses()检索系统上运行的所有进程。然后遍历该列表,查找窗口标题与要查找的值匹配的列表,中断循环,并输出proc.ProcessName;foreach(Process proc in Process.getProcesss()){if(proc.MainWindowTitle==“Google Chrome”){console.WriteLine(proc.ProcessName);break;}}为什么不将其作为一个答案写在@JohnBartels?当然,任何允许多个实例的操作都可能返回错误的实例,或者返回许多实例。使用起来可能更简单:getProcessByName(字符串)