繁体   English   中英

在C / C ++中创建一个“不可见”的Windows程序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM