在 C++ Builder 中隐藏控制台 windows

Hide console windows in C++ Builder

我正在使用 Embarcadero C++ 10.2 ‘Tokyo’ 命令行编译器作为一个小型编译器,它以压缩形式分发并且很容易 'portable'。

我正在尝试使用 Win32 API 实现这个小 Close Tray 程序 API。

#include <windows.h>

int main()
{
  mciSendString("Set CDAudio Door Closed Wait", 0, 0, 0); 
  return 0;
}

使用 bcc32c Close.cpp 编译它工作正常,但当双击可执行文件时,控制台 window 显示正常。 有没有办法像 Microsoft 编译器使用的 /SUBSYSTEM:WINDOWS 一样取消它的存在。

更新:例如,为了在 Digital Mars 中做到这一点,我使用 sc source.c 编译源文件,然后像那样使用它的链接器 Optlink

link source.obj,,,winmm.lib /subsystem:windows

因为在 Digital Mars 中编译它是不够的,它需要链接到 winmm.lib 而 Embarcadero 的编译器会自动完成。

更新 2: 我还看到了一个选项 -tW 可以使 Windows 的 taget 可执行,但它没有用,所以正在使用 bcc32x -mwindows 因为它是基于 Clang 的,仍然没有得到需要的结果。

你可以试试

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
               LPSTR lpCmdLine, int CmdShow) {
               
  mciSendString("Set CDAudio Door Closed Wait", 0, 0, 0);

  
  return 0;
}

在命令行编译器上编译

bcc32 -W winmain.c

我不知道这个开关是否适用于您的编译器。

更新:WinMain 参数如果不需要可以省略。

int WINAPI WinMain() {