使我的控制台应用程序不可见

Kra*_*atz 19 c# invisible console-application

我正在为我的公共图书馆开发一个控制台应用程序作为学校项目.控制台应用程序将在用户登录后立即运行并执行一些后台工作.

问题是,我不希望控制台应用程序真正出现.我需要它隐形.我需要的最后一件事就是投诉,因为有些人因为CMD窗口打开和关闭而感到害怕,除了图书馆希望它尽可能不可见.

我试着按照这个帖子中的代码:http: //social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ea8b0fd5-a660-46f9-9dcb-d525cc22dcbd

但无济于事,我仍然可以看到控制台应用程序在完成所有工作后弹出和关闭.

有没有更好的方法来阻止控制台出现?谢谢.

Jos*_*osh 37

最好的办法就是不要将它编译为控制台应用程序!将其编译为Windows EXE,不会显示任何控制台.然后,您可以在Main方法中执行任何操作,而无需显示UI.

但无论如何,如果你必须隐藏/显示控制台窗口,我将避免使用FindWindow执行此任务,因为有一个更可靠的API:GetConsoleWindow.这将为您提供控制台窗口的HWND,您可以尝试将其传递给ShowWindow.

  • 您可以右键单击项目,选择属性,然后将输出类型从控制台应用程序更改为Windows应用程序.不需要进行任何其他改变. (3认同)

Sea*_*ock 16

正如Josh Einstein建议您可以使用ShowWindow Api隐藏窗口.

这是一个例子:

using System.Runtime.InteropServices

class CommandLine
{

    [DllImport("user32.dll")]
    static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

    [DllImport("Kernel32")]
    private static extern IntPtr GetConsoleWindow();

    const int SW_HIDE=0;
    const int SW_SHOW=5;

    static void Main(string[] args)
    {
         IntPtr hwnd;
         hwnd=GetConsoleWindow();
         ShowWindow(hwnd,SW_HIDE);

         //Your logic goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定这个代码,因为我还没有测试过.如果您遇到任何问题,请告诉我.


Nin*_*Cat 9

您是否尝试过:项目属性>应用程序>输出类型:到"Windows应用程序"?