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

本文关键字:控制台 应用程序 显示 何更改 任务管理器 | 更新日期: 2023-09-27 18:28:30

我正在以编程方式启动控制台应用程序。它们在任务管理器中都显示为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;
}

正如您所看到的,没有一个属性可以设置进程名称(据我所知)。我希望能够在创建进程时设置进程的名称。

重复问题备注:这不是尝试的重复。以副本形式显示的解决方案用于在项目属性中设置的进程的静态名称。我正在动态地运行我的进程(在运行时),并希望在那时设置进程名称。

更新:我确信这是不可能的。至少不是以现实的(即永久的)方式。我可以肯定,我们已经被程序集信息中提供的名称"卡住"了,不能在任务管理器中以编程方式更改它。这对我的应用程序来说是不幸的,它将生成10多个相同的进程可执行文件。有时我只想杀死其中一个,但我无法确定任务管理器中的哪个是哪个,因为它们都有相同的名称。

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

使用以下行:

    Console.Title = "My Console Application";

设置控制台名称

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

您可以在创建进程后使用p/Invoke更改进程名称。(因为您在创建进程时无法指定它。默认名称是程序中指定的名称。)

[DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);
...
SetWindowText(process.MainWindowHandle, "Process Name/Title");

编辑:环顾网络,您可能需要等待100毫秒左右才能设置名称(在GUI应用程序的情况下,可以通过Thread.Sleepprocess.WaitForInputIdle)。