首先,我没有使用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 应用程序以进行比较,因为它们不显示控制台。
请不要给我任何愚蠢的答案,例如“使用 Visual Studio”或用问题而不是答案来回应。谢谢您的帮助!
您可能想使用非托管库kernel32.dll和FreeConsole函数。 这是一个例子:
[DllImport("kernel32.dll")]
static extern bool FreeConsole();
static void Main(string[] args)
{
FreeConsole();
// Do other stuff
}
请告诉我这是否是您正在寻找的!
你只能走一条路。
此方法将完全遮盖控制台窗口。
您应该使用
csc.exe
调用 /?
编译器来发现列出的 /t:winexe
开关 - 该开关用于专门编译“Windows 应用程序”,它不分配控制台(与默认的 /t:exe
行为相反) ).