※ ChatGPTを利用し、要約された質問です(原文:C# コマンドプロンプト画面で表示された文字の取得)
C# コマンドプロンプト画面で表示された文字の取得
このQ&Aのポイント
Windowsフォームアプリケーションからコマンドプロンプトを起動して、コマンドを実行した際の出力を取得する方法について質問です。
コマンドプロンプト上で特定のコマンドを実行し、表示された文字列をWindowsフォームアプリケーション側から取得したいですが、うまく取得できない状況です。解決方法を教えてください。
C#のWindowsフォームアプリケーションからコマンドプロンプト上で実行したコマンドの出力結果を取得できない問題について質問です。対象のコマンドは正常に実行され、コマンドプロンプト上で結果が表示されますが、アプリケーション側からは取得できません。どうすれば取得できるでしょうか?
C# コマンドプロンプト画面で表示された文字の取得
Windowsフォームアプリケーションからコマンドプロンプトを起動して、コマンドを実行した際に出る出力をフォームアプリケーション側から受け取ろうとしています。
テスト内容では成功するのですが、受け取りたい対象の内容は取得できずに困っています。
例えばコマンドプロンプト上で hoge と入力し実行すると
「'hoge' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
と表示されます。
しかし、前述カッコ内の表示をアプリケーション側から受け取ることが出来ませんでした。
どのようにすれば受け取ることができるでしょうか?
単純な path などを実行した場合は受け取れました。
以下が試した内容です。
Process ps = new Process();
ps.StartInfo.FileName = Environment.GetEnvironmentVariable("ComSpec");
ps.StartInfo.Arguments = @"/C hoge";
ps.StartInfo.UseShellExecute = false;
ps.StartInfo.RedirectStandardOutput = true;
ps.StartInfo.CreateNoWindow = true;
ps.Start();
string output = ps.StandardOutput.ReadToEnd();
ps.WaitForExit();
ps.Dispose();
MessageBox.Show(output);//空の内容しか表示されない
//テストで hoge を path にした際はシステム環境変数が表示された
・環境
Windows 7 Professional 64bit
VC# 2010 Express
よろしくお願いいたします。
お礼
ありがとうございます! RedirectStandardErrorをtrueにしてStandardError.ReadToEnd()から取得してみたところ、無事表示することが出来ました。