我是以编程方式启动控制台应用程序.它们都显示conhost.exe在任务管理器中.
如何设置进程名称,使其在任务管理器中显示为?
我如何设置进程的示例:
public static Process CreateMultiCoreExeProcess(int coreIndex, int coresToUse, string executableFilepath)
{
//* Create your Process
Process process = new Process
{
StartInfo =
{
FileName = executableFilepath,
Arguments = coreIndex + " " + coresToUse,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true,
RedirectStandardError = true
},
EnableRaisingEvents = true
};
return process;
}
Run Code Online (Sandbox Code Playgroud)
...正如您所看到的,没有一个属性可以设置进程名称(我知道).我希望能够在创建过程时设置进程的名称.
重复问题备注:这不是尝试的重复.作为副本呈现的解决方案是针对流程的STATIC名称,在项目属性中设置.我正在运行我的进程DYNAMICALLY(在运行时),并希望在那时设置进程名称.
更新:我确信这是不可能的.至少不是以现实(即永久)的方式.我相当肯定我们"被卡在"程序集信息中提供的名称,并且无法在任务管理器中以编程方式更改它.这对我的应用程序来说是不幸的,因为它会产生10多个相同的进程可执行文件.有时我只想杀死其中一个,但我无法确定任务管理器中的哪个是因为它们都具有相同的名称.
使用该行:
Console.Title = "My Console Application";
Run Code Online (Sandbox Code Playgroud)
设置控制台名称
要在任务管理器中设置名称/描述,之前已经回答过好几次了。检查此链接如何设置我的程序的任务管理器描述?
您可以在创建后使用P/Invoke更改进程名称.(因为在创建它时无法指定它.默认名称是程序中指定的名称.)
[DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);
...
SetWindowText(process.MainWindowHandle, "Process Name/Title");
Run Code Online (Sandbox Code Playgroud)
编辑:在网上四处看看,看起来您可能需要等待100ms左右才能设置名称(通过Thread.Sleep或process.WaitForInputIdle在GUI应用程序的情况下).