14

C++ でコマンドを使用してsystem外部プログラムを呼び出していますが、それを使用するたびに、コマンドの終了後にコンソール ウィンドウが開いたり閉じたりします。

コンソール ウィンドウが開かないようにするにはどうすればよいですか? プラットフォームに依存しないソリューションになれば幸いです。また、コマンドが終了するまでプログラムを待機させたいと思います。

4

5 に答える 5

6

これはおそらく最も簡単で、おそらく最良の方法です。これにより、このコマンドの実行中にプログラムがフリーズしないようにすることもできます。最初に、次を使用して Windows ヘッダーを含めることを忘れないでください。

#include <Windows.h>

次に、次の関数を使用してコマンドを実行する必要があります。

WinExec("your command", SW_HIDE); 

ノート; このWinExec方法は、10 年以上にわたって廃止されてきました。とはいえ、今日も元気に動いています。必要でない場合は、このメソッドを使用しないでください。

...使用したくない方法の代わりに;

system("your command");
于 2012-03-13T14:30:55.000 に答える
3

Windowsを使用しているようです。

Linux (および一般的には *nix) では、 へのsystem呼び出しをforkおよびへの呼び出しexecにそれぞれ置き換えます。Windows では、Windows API にある種の spawn-a-new-process 関数があると思います。ドキュメントを参照してください。

シェルコマンドや外部プログラムを実行している場合、実行しているコマンドや外部プログラムを持つプラットフォームに依存するため、プログラムをプラットフォーム非依存にするのは困難です。

于 2009-11-26T09:15:13.930 に答える
1

エラー。CreateProcessまたはShellExecute

于 2009-11-26T09:45:40.233 に答える
0

exec() は POSIX であるため、プラットフォームに依存しないように見えます。Windows では _exec() ですが、UNIX では exec() です: http://msdn.microsoft.com/en-us/library/431x4c1w(VS.71).aspxを参照してください。

于 2009-11-26T09:38:35.980 に答える