質問: 初めての投稿になります。 表題の通りなのですがウィンドウズフォームアプリケーション(環境 Win7,.NetFramework4.0 or 4.5)で本来DOSプロンプトで動作するプログラム、例えばMySQL.exeなどをにコマンドを送り、その表示結果を取得する事は可能でしょうか? 具体性の乏しい質問なので恐縮ですが解決方法についてまったく想像がつかない状態ですのでザクっとした方向性でも良いのでご示唆頂けないでしょうか? Consoleのようなプログラム()を組めば良いのだと想像しますが可能であれば.Netで構築したいと考えております。 よろしくお願いします。
回答: まず.NETで外部プロセスを起動する場合`System.Diagnostics.Process`型を使用します。 ``` Dim p As new Process() p.StartInfo.FileName = "mysql.exe" p.Start() ``` この際にプロセスにパラメーターを渡す手段としては2つの方法があります。1個はコマンドライン引数です。 ``` p.StartInfo.Arguments = "hoge fuga" p.Start() ``` これはコマンドプロンプトで`mysql.exe hoge fuga`と入力した場合と同等の動作となります。 またコマンドライン引数ではなく、起動後に入力を求められるタイプのプロセスとは標準入力で通信します。 ``` p.StartInfo.UseShellExecute = False p.StartInfo.RedirectStandardInput = True p.Start() p.StandardInput.WriteLine("hoge fuga") ``` なおプロセスからの出力は`StandardOutput`や`StandardError`で読み取れます。