[解決済み] コマンドプロンプトはどのようにして終了を待つタイミングを知るのですか?
質問
私は C# で Windows コマンドプロンプトの再コード化を試みていました。私は、コマンド プロンプトが、起動されたプロセスが終了するのをいつ待ち、呼び出されたプロセスが終了するのをいつ待たないかをどのように知るのか不思議に思っていました。
たとえば、コマンド プロンプトで "notepad" と入力した場合。 メモ帳 が起動しますが、他のコマンドを実行することは可能です。しかし、more.com や ping.exe などのユーティリティを開くと、実行中のプログラムが終了するのを待ってから別のコマンドを実行できるようになります。
コマンドプロンプトはどのようにして終了を待つタイミングを知るのでしょうか、また、この動作をC#でどのようにエミュレートできるのでしょうか。
どのように解決するのですか?
アプリケーションが Win32 GUI アプリケーションの場合、そのまま実行され、コマンド プロンプトが終了するのを待つことはありません。
アプリケーションがコンソール アプリケーションの場合、コマンド プロンプトで実行され、コマンド プロンプトを復帰させるために終了を待つ必要があります。
EDITです。
OKです。技術的な説明が必要なようですね。 もし、あなたのアプリケーションで同じ機能をエミュレートしたい場合は
IMAGE_OPTIONAL_HEADER
EXE ファイルの
ここで
.
内部
IMAGE_OPTIONAL_HEADER
は、あります。
WORD Subsystem;
If SubSystem == 0x02
は、GUIアプリケーションであることを意味します。
If SubSystem == 0x03
は、コマンドプロンプトのアプリであることを意味します。
EDIT 2:
実際に見てみたい方は
-
calc.exeまたはnotepad.exeをデスクトップにコピーします。
-
コピーしたcalc.exeをCFFエクスプローラで開く
-
Nt Headers -> Optional Headersに移動します。
-
サブシステムを 0x002 から 0x003 に変更します。
-
保存する
さて、新しく修正したcalcを実行すると、コマンドプロンプトが終了するのを待つのがわかるでしょう。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] Windowsのコマンドラインからアプリケーションの終了コードを取得するにはどうすればよいですか?
-
[解決済み] コマンドプロンプトのコマンドを実行する
-
[解決済み] Windowsのコマンドプロンプトから環境変数を更新するコマンドはありますか?
-
[解決済み] インタプリタのコンソールをクリアする方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】C#で四捨五入する方法
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】WebResource.axdとは何ですか?