11

GUI とコンソール アプリケーションの違いの 1 つは、バッチ ファイルから GUI アプリケーションを実行してもその実行がブロックされないが、コンソール アプリケーションを実行するとブロックされることであると主張するインターネット上の多くの参照があります。

多くの参照のうち、これらは特に SO/SE からのものです。

また、私自身、これは本当だった/本当だったことを覚えています。

しかし、この方法ではうまくいかないようです。

次のような単純なバッチ ファイルでこれをテストしました。

echo Pre
notepad
echo Post

Postメモ帳を閉じるまで印刷されません。メモ帳が明らかに GUI アプリケーションであるのに、なぜでしょうか。

最近のバージョンの Windows で動作が変更された可能性を排除するために、Windows 8、7、および XP でこれをテストしました。考えられる原因の 1 つとして、コマンド拡張機能も無効にしようとしました。

4

4 に答える 4

1

私は NT 3.1 から Windows を使用しており、(START コマンドを使用するのではなく) プログラムの名前を入力するだけで、「cmd.exe は GUI プログラムが終了するのを待ちません」と言うでしょう。記憶が薄れますが、もともとはこうだったのだと思います。しかし、今日、私の声明は対話的には真であり、「バッチ」ファイルについては偽です。このように思い出すと、ナイーブなバッチライターは順次実行を期待しているため、ある時点で意図的に変更されたと漠然と思いますが、確信が持てず、いつになるかわかりません。

于 2016-08-04T01:25:27.843 に答える
0

答えはこの質問にあると思いますWindowsとコンソールアプリケーションの違い

2つの回答から引用します。

コンラート・ルドルフはこう答えました。

唯一の違いは、コンソール アプリケーションがコンソールから開始されていない場合 (またはコンソールが起動時にアクティブに抑制されている場合)、コンソール アプリケーションが常にコンソールを生成することです。一方、Windows アプリケーションはコンソールを生成しません。既存のコンソールに接続したり、AllocConsole を使用して新しいコンソールを作成したりできます。

これにより、Windows アプリケーションは GUI アプリケーションやバックグラウンド アプリケーションにより適したものになります。通常、これらのアプリケーション用にターミナル ウィンドウを作成する必要はないからです。

オフェはこう答えました。

コマンド プロンプトから対話的に呼び出された場合、コンソール アプリケーションと Windows アプリケーションの動作は異なります。

コンソール アプリケーションを起動すると、コンソール アプリケーションが終了するまでコマンド プロンプトに戻りません。Windows アプリケーションを開始すると、コマンドはすぐに戻ります。

これはバッチ ファイルには当てはまりません。アプリケーションが終了するまで常に待機します。

cmd と batch の間のこの動作の違いにより、以前は機能していたと思われました。

于 2016-01-24T14:17:09.767 に答える