Winapi 我怎样才能使程序愚蠢地运行?(不显示控制台窗口)

Winapi 我怎样才能使程序愚蠢地运行?(不显示控制台窗口),winapi,console,window,Winapi,Console,Window,例如,在C#中,您可以使程序在不出现黑屏的情况下运行……因此我想:既然您可以使用.NET执行任何操作,那么您也可以使用Win32执行任何操作,也许有一个解决方案 有什么想法吗?当程序链接到/SUBSYSTEM:console时,控制台窗口会出现,如果您没有要求任何其他内容,这是默认窗口 如果您希望它成为“Windows应用程序”,即“为GUI做出贡献”,包括不可见,请链接到/SUBSYSTEM:Windows。但是,您需要一个WinMain函数,而不是通常的main函数。打开项目-属性,并将/S

例如,在C#中,您可以使程序在不出现黑屏的情况下运行……因此我想:既然您可以使用.NET执行任何操作,那么您也可以使用Win32执行任何操作,也许有一个解决方案


有什么想法吗?

当程序链接到
/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
    而不是控制台应用程序
  • 当我做跨平台工作时,我更喜欢使用标准( C/C++入口点来进行我的所有项目。

(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,现在它工作了:-)