single.php

C# WinUI3で外部CUIアプリのエラー文字列を受け取る方法

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで[FFmpeg]など外部プログラムを実行した結果やエラー文字列を受け取る方法です。

出力とエラーは異なる

外部プログラムを操作した結果やエラーは[System.Diagnostics]アセンブリの[Process]クラスを使って受け取ることが可能です。

[Process]には[StandardOutput]や[StandardError]プロパティがあり、それぞれ[StreamReader]として値の受取が可能です。

プロパティを利用するには、プロセスを開始する前に[RedirectStandardOutput]や[RedirectStandardError]の値を[True]にする必要があります。

また、出力とエラーは分けられているので、コマンドのエラーを取得するには[StandardError]プロパティを使います。

具体的に[ffmpeg.exe]のエラーを取得するには、こんな感じで行います。

string args = "";
var process = Process.Start(new ProcessStartInfo("ffmpeg.exe", args)
{
  CreateNoWindow = true,
  UseShellExecute = false,
  RedirectStandardOutput = true,
  RedirectStandardInput = false,
  RedirectStandardError = true,
});

if (process != null)
{
  string resultOutput = process.StandardOutput.ReadToEnd();
  string resultError = process.StandardError.ReadToEnd();
  process.WaitForExit();
  process.Close();
}

実行して、エラーが発生すると[resultError]にエラー(コマンドプロンプトに表示される文字列)が取得できます。

まとめ

今回は、短い記事ですがWinUI3プロジェクトで外部プログラムを実行した結果やエラー文字列を取得する方法について紹介しました。

[Process]で外部アプリを実行する際に[RedirectStandardError]プロパティを有効にしておくと、プロセス開始時に[StandardError]プロパティでエラー文字列が取得可能です。

WinUI 3 アプリで外部アプリを開始した際のエラー文字列を表示したい人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です