![](/img/trans.png)
[英]How to make a simple Hello World “invisible” in Windows (C/C++)
[英]Creating an “invisible” windows program in C/C++
好的,这是该问题的延续: 如何在Windows(C / C ++)中使简单的Hello World“不可见”
人们给了我一些指导,在这里我有了一个新的问题:
经过一番研究后,我再次陷入困境。 互联网上的人们声称,仅创建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进行编译。
转到Project Properties > Configuration Properties > Linker > System > SubSystem
,并将其设置为Windows
。 如果执行此操作并运行程序,例如,将程序置于无限循环中,则必须从任务管理器中将其杀死。
我不知道如何在GCC上执行此操作。
杰拉尔德(Gerald)在评论中告诉我,使用--subsystem,windows
或-mwindows
将对GCC做到这一点。 请注意, -mwindows
链接GDI库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.