没有控制台窗口的exe,没有Visual Studio

问题描述 投票:0回答:3

首先,我没有使用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”或用问题而不是答案来回应。谢谢您的帮助!

console hide exe
3个回答
0
投票

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

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

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

请告诉我这是否是您正在寻找的!


0
投票

你只能走一条路。

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

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


0
投票

您应该使用

csc.exe
调用
/?
编译器来发现列出的
/t:winexe
开关 - 该开关用于专门编译“Windows 应用程序”,它不分配控制台(与默认的
/t:exe
行为相反) ).

© www.soinside.com 2019 - 2024. All rights reserved.