2

私は c++ を使用しており、winmain で動作するプログラムがあります。system() 呼び出しでウィンドウを開いたり閉じたりしたくありません。

例:

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    system("dir > nul 2> nul");

    return 0;
}

システム コールを使用したいのですが、システム コールで新しいウィンドウを開きたくありません。

前もって感謝します。

編集:

私はこの解決策を見つけました:

ウィンドウを開かずにcmdコマンドを実行するには、batファイルを作成し(プログラムがこれを行います)、次のコードを使用します:

ShellExecute(NULL, "open", "Directory_Of_Bat_File", NULL, NULL, 0);

これにより、bat ファイルが開き、コマンドが実行されます。また、bat ファイルを削除するのに system() は必要ないことにも気付きましたが、次のように記述して削除できます。

del Directory_Of_Bat_File

バットファイル内で、これはバットファイルを実行すると削除されます(それ自体が削除されます)。これは、新しいウィンドウを開くことなく。

4

3 に答える 3

0

私はこの解決策を見つけました:

ウィンドウを開かずにcmdコマンドを実行するには、batファイルを作成し(プログラムがこれを行います)、次のコードを使用します:

ShellExecute(NULL, "open", "Directory_Of_Bat_File", NULL, NULL, 0);

これにより、bat ファイルが開き、コマンドが実行されます。また、bat ファイルを削除するのに system() は必要ないことにも気付きましたが、次のように記述して削除できます。

del Directory_Of_Bat_File

バットファイル内で、これはバットファイルを実行すると削除されます(それ自体が削除されます)。これは、新しいウィンドウを開くことなく。

于 2013-07-03T20:49:13.270 に答える
0

CreateProcessまたはを使用ShellExecuteしてプロセスを起動すると、ウィンドウに関連するオプションを渡すことができます。system() が実行するものは、通常、環境で見つけることができます。getenv("ComSpec")

于 2013-06-30T19:06:17.077 に答える