如何防止C#控制台应用程序将优先级作为活动窗口?

如何防止C#控制台应用程序将优先级作为活动窗口?,c#,console,C#,Console,如果有人问这个问题,我很抱歉,但我找不到答案。我可能找不到合适的术语 我有一个控制台程序,需要在后台运行。用户需要控制台在运行时保持打开状态,但需要它在启动时不成为活动窗口。他们希望继续目前正在进行的工作,而不必每次启动时都最小化控制台 此控制台应用程序运行多次,每次都有一个新的控制台窗口。如何将控制台“隐藏”到当前正在运行的任务/窗口后面?您可以使用以下代码以编程方式最小化/恢复控制台窗口: using System; using System.IO; namespace ConsoleAp

如果有人问这个问题,我很抱歉,但我找不到答案。我可能找不到合适的术语

我有一个控制台程序,需要在后台运行。用户需要控制台在运行时保持打开状态,但需要它在启动时不成为活动窗口。他们希望继续目前正在进行的工作,而不必每次启动时都最小化控制台


此控制台应用程序运行多次,每次都有一个新的控制台窗口。如何将控制台“隐藏”到当前正在运行的任务/窗口后面?

您可以使用以下代码以编程方式最小化/恢复控制台窗口:

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Class1
    {
        [System.Runtime.InteropServices.DllImport("user32.dll")]
        private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
        private const int SW_MINIMIZE = 6;
        private const int SW_MAXIMIZE = 3;
        private const int SW_RESTORE = 9;

        [STAThread]
        static void Main(string[] args)
        {
            IntPtr winHandle =
                System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
            ShowWindow(winHandle, SW_MINIMIZE);
            System.Threading.Thread.Sleep(2000);
            ShowWindow(winHandle, SW_RESTORE);
        }
    }
}
如果您正在使用Process.Start启动控制台应用程序,最好使用以下选项:

System.Diagnostics.ProcessStartInfo process= new
    System.Diagnostics.ProcessStartInfo(@"MyApplication.exe");
process.WindowStyle=System.Diagnostics.ProcessWindowStyle.Minimized;
process.UseShellExecute=false; // Optional
System.Diagnostics.Process.Start(process);

我不知道有什么方法可以阻止控制台窗口显示。在控制台应用程序中,最好的方法是在应用程序加载后立即隐藏窗口。视觉效果是快速打开控制台窗口,然后消失。也许不是最优的

更好的方法可能是使用Winexe,而不是控制台应用程序。在Windows应用程序(可能是winforms应用程序)中,永远不要实例化第一个表单。因此,任何东西都不会显示出来

这会阻止用户交互,但从您的描述来看,这似乎是您想要的


但我不确定您是否可以控制“控制台应用程序”。

为什么您需要控制台窗口可见?是否完全没有GUI更好?就让它在后台运行?这很容易做到。这正是我所需要的。我会在应用程序启动后立即隐藏窗口,并允许用户继续执行当前任务。谢谢