【コピペで完了】C#でDOS コマンドを実行し結果を取得する!

プログラミングTips
この記事は約3分で読めます。

自作のプログラムで何らかの機能を作る場合、すでに近い機能を持つDOSコマンドが存在していたら、それを利用するのが一番簡単です。

そこで、C#からDOSコマンド(=コンソールアプリケーション)を起動して、その結果を取得する関数を作りましたので、もしよければご活用下さい。

サンプルプログラムの画面

コマンドを入力し、「実行」ボタンをクリックすると結果を表示するサンプルプログラムを作成しました。

この画面で使っているのが、今回紹介する関数です。

関数のソースコード

今回紹介する関数のソースコードは次の通りです。

この関数をコピペして使う場合は、次の2行をソースコードの先頭に追加しておいてください。

ちなみに、冒頭で紹介したサンプルプログラムはWPFで作成していますが、この関数自身はWindowsFormとWPFのどちらでも使えます。

関数の使い方

使い方はシンプルで、引数にDOSコマンド(=コンソールアプリケーション)を渡すだけです。

結果は IEnumerable<string> として帰ってきますので、末尾にToArray()を付けるか、ループ処理で取り出して下さい。

ループで取り出してテキストボックスやリストボックスなどのコントロールに随時追加していく場合、この処理に引きずられて画面が更新されません。

この場合、DoEvents() をループの中に記述して下さい。

WPFの場合はDoEvents() がありませんが、下記のDoEvents関数を使えば同じ結果が得られます。

サンプルのソースコード

それでは、サンプルのソースコードを紹介しておきます。

まずはXAML側のソースコードです。

次はC#側のソースコードです。uxCommand テキストボックスに入力された内容を RunCommand関数に渡して、結果をループで取り出し、uxResult リストボックスに随時追加しています。

ループの中でリストボックスに登録しているため、このままだと画面がフリーズしたようになってしまいます。

この対応として、自作の DoEvent() をループの中で呼び出しています。

もしWindowFormで使う場合は、標準のDoEvent() を使ってください。

まとめ

今回は、C#プログラムからDOSコマンド(=コンソールアプリケーション)を呼び出すための関数の紹介と、それを使ったサンプルプログラムについて、簡単な解説とソースコードを公開致しました。

皆様のプログラム開発の参考になれば幸いです。

タイトルとURLをコピーしました