コンソール ウィンドウを隠す Win32 プログラミング

コンソール プログラムを作成していて、プログラムを開始したコンソールからプログラムを切り離したい場合は、FreeConsole を呼び出します。 .最終的には、おそらくその関数の実際の機能に満足することはないでしょうが、それはあなたが尋ねた質問に対する文字通りの答えです.

そもそもコンソールを使用したくないプログラムを作成している場合は、コンソール プログラムにならないようにプロジェクトを構成します。 「コンソール性」は、EXE ファイルのプロパティです。 OS はその設定を読み取り、コードが実行される前にプログラムにコンソールを割り当てるかどうかを決定します。 であるため、プログラム内で制御することはできません。非コンソール プログラムは「GUI プログラム」と呼ばれることがあるため、開発環境の構成オプションで「コンソール」と「GUI」のどちらを選択するかを探すことができます。 GUI に設定する必要はありません ただし、ユーザーインターフェイスがまったくないこと。この設定は、プログラムがコンソールで開始するかどうかを制御するだけです。

コンソールを持つ場合と持たない場合があるプログラムを作成しようとしている場合は、前の質問「1 つの実行可能ファイルをコンソールと GUI アプリの両方にすることはできますか?」を参照してください。


Windows を使用していると仮定して、コンソール プログラムではなく、GUI プログラムを作成するようにリンカーを構成します。

  • VS:プロジェクト プロパティのリンカ オプションを調べる
  • リンク:/SUBSYSTEM:WINDOWS を追加
  • MinGW:-mwindows

#include <windows.h>
#include <iostream>
using namespace std;
void Stealth()
{
 HWND Stealth;
 AllocConsole();
 Stealth = FindWindowA("ConsoleWindowClass", NULL);
 ShowWindow(Stealth,0);
}

int main()
{
  cout<<"this sentence is visible\n";
  Stealth(); //to hide console window
  cout<<"this sentence is not visible\n";
  system("PAUSE");
  return EXIT_SUCCESS;
}