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

我很抱歉,如果有人问过,但我找不到答案.我可能没有找到合适的条款.

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

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

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

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);

转载注明原文:如何防止C#控制台应用程序将优先级作为活动窗口? - 代码日志