1

首先,我没有使用 Visual Studio,我使用的是记事本和 csc。我想要做的是像Visual Studio的Windows应用程序一样创建exe,也就是说,当你双击exe时根本不会打开任何控制台窗口。我发现了这个:

[DllImport("kernel32"]
public static extern IntPtr GetConsoleWindow();

IntPtr window = GetConsoleWindow();
if(window != IntPtr.Zero) ShowWindow(window, 0);

和类似的片段,它们可以工作,但控制台仍然会出现一瞬间。我希望它根本不出现。

此外,使用 Process 类也无济于事,因为 exe 是独立的,需要手动双击,它不是从已经运行的程序中启动的。

我也知道使用 vbs 脚本来启动打开 exe 的 bat 以及其他解决方法,但它们不适合我的需要。

如何编译 exe 以仅在没有任何控制台窗口的情况下打开?这一定是可能的,因为 Visual Studio 的 Windows 应用程序可以做到这一点。为了澄清我什至不想要一个表单,我只想让程序在后台运行,我只是为了比较而指的是 Windows 应用程序,因为它们没有显示控制台。

请不要给我任何愚蠢的答案,例如“使用视觉工作室”或用问题而不是答案来回答。谢谢您的帮助!

4

2 回答 2

0

你只能走一条路。

  1. 将您的(自己的)应用程序创建为 GUI 子系统,而不是 CONSOLE 子系统。
  2. 当您运行编译器时 - 使用带有 SW_HIDE (CmdShow) 的 CreateProcess 或 ShellExecute (C++)。不记得了,C#函数中是否有相应的参数,认为- 必须。如果没有 - 使用 WinAPI 启动编译器。

此方法将完全遮盖控制台窗口。

于 2012-10-11T06:27:29.400 回答
0

您可能想要使用非托管库 kernel32.dll 和 FreeConsole 函数。这是一个例子:

[DllImport("kernel32.dll")]
static extern bool FreeConsole();

static void Main(string[] args)
{
    FreeConsole();
    // Do other stuff
}

让我知道这是否是您要找的!

于 2012-10-11T03:11:44.190 回答