如何更改任务管理器中显示的控制台应用程序的名称?

sap*_*ket 3 c# console

我是以编程方式启动控制台应用程序.它们都显示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多个相同的进程可执行文件.有时我只想杀死其中一个,但我无法确定任务管理器中的哪个是因为它们都具有相同的名称.

Ahm*_*war 5

使用该行:

    Console.Title = "My Console Application";
Run Code Online (Sandbox Code Playgroud)

设置控制台名称

要在任务管理器中设置名称/描述,之前已经回答过好几次了。检查此链接如何设置我的程序的任务管理器描述?


Cyr*_*ral 5

您可以在创建后使用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.Sleepprocess.WaitForInputIdle在GUI应用程序的情况下).