如何在启动可执行文件时隐藏或禁用 cmd 控制台

如何在启动可执行文件时隐藏或禁用 cmd 控制台

我编写了一个可执行文件,它在屏幕上显示一个窗口并获取一些有用的输入。它绑定到⊞ Win+ N

#n:: Run "C:\Perso\dev-perso\dly\dly.exe"

我的问题是:这还会打开一个cmd(或 PS)控制台,有时会覆盖实际程序:

在此处输入图片描述

有没有办法在不使用关联控制台的情况下启动可执行文件?

我尝试过,文档,使用HideMin参数,但这会改变两个程序的行为,而不仅仅是控制台。

答案1

Windows 应用程序有两种类型:图形或控制台。如果可执行文件是控制台应用程序,则启动时会自动显示 CMD 窗口作为其输出。

在程序开始运行之前,Windows 需要知道要使用哪个子系统。一旦程序开始运行,就不可能返回并请求其他模式。在编程中,区别在于程序主过程的定义。

您的程序属于控制台子系统,可能是因为它编程起来更简单(不需要消息泵)。控制台程序可以使用 GetConsoleWindow 函数ShowWindow 函数

实现这一点的具体代码由您决定,或者您可以询问 堆栈溢出 这是解决编程问题的地方。

答案2

我使用 Java 编写代码;通过 GraalVM 本机编译可执行文件。
要隐藏控制台,我必须在构建可执行文件后执行另一个步骤。

  1. 假设我将项目“com.tugalsan.gvm.cloud”编译为本机可执行文件“com.tugalsan.gvm.cloud.exe”。

  2. 首先,我使用下面的 cmd 复制带有“noconsole”标签的可执行文件:

copy com.tugalsan.gvm.cloud.exe com.tugalsan.gvm.cloud.noconsole.exe
  1. 然后我运行“editbin.exe”,如下所示。
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx64\x64\editbin.exe" /SUBSYSTEM:WINDOWS com.tugalsan.gvm.cloud.noconsole.exe

相关内容