Winapi 我怎样才能使程序愚蠢地运行?(不显示控制台窗口)
例如,在C#中,您可以使程序在不出现黑屏的情况下运行……因此我想:既然您可以使用.NET执行任何操作,那么您也可以使用Win32执行任何操作,也许有一个解决方案Winapi 我怎样才能使程序愚蠢地运行?(不显示控制台窗口),winapi,console,window,Winapi,Console,Window,例如,在C#中,您可以使程序在不出现黑屏的情况下运行……因此我想:既然您可以使用.NET执行任何操作,那么您也可以使用Win32执行任何操作,也许有一个解决方案 有什么想法吗?当程序链接到/SUBSYSTEM:console时,控制台窗口会出现,如果您没有要求任何其他内容,这是默认窗口 如果您希望它成为“Windows应用程序”,即“为GUI做出贡献”,包括不可见,请链接到/SUBSYSTEM:Windows。但是,您需要一个WinMain函数,而不是通常的main函数。打开项目-属性,并将/S
有什么想法吗?当程序链接到
/SUBSYSTEM:console
时,控制台窗口会出现,如果您没有要求任何其他内容,这是默认窗口
如果您希望它成为“Windows应用程序”,即“为GUI做出贡献”,包括不可见,请链接到
/SUBSYSTEM:Windows
。但是,您需要一个WinMain
函数,而不是通常的main
函数。打开项目-属性,并将/SUBSYSTEM链接器选项设置为WINDOWS。函数:
start/b[命令]我有一个头文件“maintentrypoint.h”,其中包含以下文本:
#pragma once
#if defined _MSC_VER
#if !defined _WINDLL
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#endif
#endif
我#将此文件包含在任何项目的main.cpp文件中
- 需要是
而不是控制台应用程序windows
当我做跨平台工作时,我更喜欢使用标准(
(guard宏会自动确保它只适用于DevStudio构建,并且在构建dll时不会弄乱入口点)。我该怎么做?我输入了:#pragma comment(linker,“/SUBSYSTEM:WINDOWS”),并将“int main()”替换为:int-apitery-WinMain(HINSTANCE-HINSTANCE、HINSTANCE-hPrevInstance、LPSTR-lpCmdLine、int-nCmdShow),但它仍然不起作用……正如@Alex-Farber所建议的,有两种方式,您可以通过VisualStudio的属性编辑器来完成这项工作,您正在寻找C++项目的链接器设置。另一种方法是,如果您是手动构建,则在该行中键入“LINK/out:exename.exe obj1.obj obj2.obj”时,可以附加/SUBSYSTEM:WINDOWS。您无需将main函数更改为WinMain。至少,不必这样做。谢谢,确实WinMain()是不必要的…我认为它以前对我不起作用,因为我在使用一个旧的编译器…我使用了Visual Studio,现在它工作了:-)