2

いくつかのコマンド ライン オプションをサポートする非常に単純なコンソール アプリケーションを作成しました。コマンド ライン引数がない場合 (引数が 1 つしかないことを意味します)、アプリケーションは黒いウィンドウを表示せずに閉じます。現在、以下のコードを実行すると、コマンド ライン引数がないため、すぐに閉じますが、一瞬黒い窓、避けたい。では、どうすれば簡単な方法でそれを行うことができますか?

#include <iostream>
using namespace std;

int main(int argc,char** argv)
{
    if (argc==1) return 0;
    if (argc!=1)
    for (int i=2; i<=argc; i++)
        cout << argv[i] << endl;
    cin.sync();cin.get();
    return 0;
} 
4

2 に答える 2

2

コンソールアプリケーションを作成する場合、コンソールウィンドウの作成から逃れることはできません。

ただし、エントリポイントWinMainを使用してwin32アプリケーションを作成できます。ウィンドウは作成されず、コンソールプログラムとして機能します。

于 2012-06-19T15:03:41.857 に答える
2

プログラムを実行するには、Windows にコンソール ウィンドウが必要です。コンソール ウィンドウが作成されると、コントロールは main に入ります。コマンド ライン パラメータを確認できるのは main 内だけです。つまり、やりたいことができないということです。

ただし、CreateProcess API を使用すると、コンソール ウィンドウを表示せずにプログラムを実行できます。したがって、別のプログラムからコンソール アプリケーションを実行できる場合は、コマンド ライン引数があるかどうかを確認し、CreateProcessを使用してコンソール ウィンドウを表示するかどうかを決定できます。

CreateProcessを使用してコンソール ウィンドウを表示しないようにするには、STARTUPINFO のdwFlagsパラメータをSTARTF_USESHOWWINDOWに設定し、 wShowWindowパラメータでSW_HIDE を指定します。

于 2012-06-19T14:42:45.513 に答える