在控制台应用程序中隐藏控制台窗口

本文关键字:控制台 窗口 隐藏 应用程序 | 更新日期: 2023-09-27 18:27:57

我有一个使用控制台的应用程序,但我更改了所有代码以写入文件而不是控制台。我现在希望控制台在运行应用程序时停止显示。我该怎么做?我不知道首先打开控制台的是什么,尽管代码中没有写入任何内容。

我已经查看了应用程序引用,但找不到正在引用的System.Console。我认为禁用它会修复它,或者给我指明错误的正确方向。我不知道还能去哪里看。

我在网上找到的所有其他东西都在谈论如何隐藏控制台。我希望它一开始就不要出现。

在控制台应用程序中隐藏控制台窗口

转到"应用程序属性",将"输出类型"从"控制台应用程序"更改为"Windows应用程序"。

或者你可以使用下面的代码

using System.Runtime.InteropServices;
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

并且在主中

const int SW_HIDE = 0;
const int SW_SHOW = 5;
var handle = GetConsoleWindow();
ShowWindow(handle, SW_HIDE); // To hide
ShowWindow(handle, SW_SHOW); // To show

此外,您还可以将应用程序作为服务运行。为了做到这一点,您应该创建一个服务-文件->新项目->Visual C#->Windows->Windows服务。然后创建一个公共方法StartWork(),并在那里添加所有逻辑。并在OnStart()中调用此方法。

 protected override void OnStart(string[] args)
    {
        try
        {
            this.StartJobs();
        }
        catch (Exception ex)
        {
            // catching exception
        }
    }
    public void StartWork()
    {
       // all the logic here
    }

通常,您应该创建此服务并使用System.ServiceProcess.ServiceBase.Run()将其作为服务运行,或者调用StartWork()将其作为控制台应用程序运行。

static void Main(string[] args)
{
    TestService = new  TestService ();
    #if DEBUG
        TestService.StartWork()();
    #else
        System.ServiceProcess.ServiceBase.Run(TestService ); 
    #endif
}