好的,这是这个问题的延续:How to make a simple Hello World "invisible" in Windows (C/C++)
人们给了我一些指导,我在这里提出了一个新问题:
做了一些研究后,我再次陷入困境。网上有人声称,只要创建一个 win32 应用程序,就不会出现图形指示。
这是执行此操作的代码(我很确定您已经知道这一点,但有)
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {
//code
return 0;
}
所以在main中输入的代码不会显示。我真的不明白他们的意思是什么,但例如:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {
while (1) {
}
}
这个程序弹出一个 Cmd 窗口就好了。
我还发现,通过像这样初始化 STARTUPINFO 结构中的值
STARTUPINFO StartupInfo;
memset(&StartupInfo, 0, sizeof(StartupInfo));
// set the size of the structure
StartupInfo.cb = sizeof(STARTUPINFO);
// tell the application that we are setting the window display
// information within this structure
StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
// set the window display to HIDE
StartupInfo.wShowWindow = SW_HIDE;
将隐藏控制台窗口。但这对我来说也不起作用。我有这种感觉,我在这里缺少一个主要概念,所以我需要你们的知识。我想用 while 循环或不显示任何内容的简单打印之类的东西创建简单的 .exe。我错过了什么?
最佳答案
您必须使用特定的编译器选项才能执行此操作;它不是代码本身的属性。我假设您正在使用 Visual Studio 进行编译。
转到项目属性>配置属性>链接器>系统>子系统
并将其设置为Windows
。如果您执行此操作并运行程序,例如将程序置于无限循环中,则必须从任务管理器中终止它。
我不知道如何在 GCC 上执行此操作。 Gerald 在评论中告诉我使用 --subsystem,windows
或 -mwindows
将为 GCC 执行此操作。请注意,-mwindows
也链接 GDI 库。
关于使用 C/C++ 创建 "invisible"windows 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9492470/