ウィンドウズフォームアプリケーションから対話型コンソールアプリケーションを操作するには?

投稿者: Anonymous

初めての投稿になります。

表題の通りなのですがウィンドウズフォームアプリケーション(環境 Win7,.NetFramework4.0 or 4.5)で本来DOSプロンプトで動作するプログラム、例えばMySQL.exeなどをにコマンドを送り、その表示結果を取得する事は可能でしょうか?

具体性の乏しい質問なので恐縮ですが解決方法についてまったく想像がつかない状態ですのでザクっとした方向性でも良いのでご示唆頂けないでしょうか?

Consoleのようなプログラム(http://sourceforge.net/projects/console/?source=typ_redirect)を組めば良いのだと想像しますが可能であれば.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")

なおプロセスからの出力はStandardOutputStandardErrorで読み取れます。

回答者: Anonymous

Leave a Reply

Your email address will not be published.