【问题标题】:Hide the console window from a console application [duplicate]从控制台应用程序隐藏控制台窗口[重复]
【发布时间】:2016-03-30 04:44:39
【问题描述】:

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

我查看了应用程序引用,但找不到引用的 System.Console。我虽然禁用它会修复它或指出错误的正确方向。我不知道还能去哪里看。

我在网上找到的所有其他内容都与隐藏控制台有关。我希望它一开始就不要出现。

【问题讨论】:

    标签: c#


    【解决方案1】:

    转到应用程序属性并将输出类型从控制台应用程序更改为 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
    

    此外,您可以将应用程序作为服务运行。为此,您应该创建一个服务 - File->New Project->Visual C#->Windows->Windows Service。然后创建一个公共方法StartWork() 并在那里添加所有逻辑。并在OnStart()中调用这个方法。

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

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

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

    【讨论】:

    猜你喜欢
    • 2011-04-20
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2019-07-22
    • 2012-10-14
    • 2011-06-19
    相关资源
    最近更新 更多