12664


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

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

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

Consoleのようなプログラム（<http://sourceforge.net/projects/console/?source=typ_redirect>）を組めば良いのだと想像しますが可能であれば.Netで構築したいと考えております。

よろしくお願いします。


CC BY-SA 3.0
2015-07-24T15:43:31.237
12663
2015-09-07T06:47:24.403
2015-09-07T06:47:24.403
4236
10606
question
windows .net visual-studio vb.net
ウィンドウズフォームアプリケーションから対話型コンソールアプリケーションを操作するには？


まず.NETで外部プロセスを起動する場合`System.Diagnostics.Process`型を使用します。

[code]

    Dim p As new Process()
    p.StartInfo.FileName = "mysql.exe"
    p.Start()
    
[/code]

この際にプロセスにパラメーターを渡す手段としては2つの方法があります。1個はコマンドライン引数です。

[code]

    p.StartInfo.Arguments = "hoge fuga"
    p.Start()
    
[/code]

これはコマンドプロンプトで`mysql.exe hoge fuga`と入力した場合と同等の動作となります。

またコマンドライン引数ではなく、起動後に入力を求められるタイプのプロセスとは標準入力で通信します。

[code]

    p.StartInfo.UseShellExecute = False
    p.StartInfo.RedirectStandardInput = True
    p.Start()
    p.StandardInput.WriteLine("hoge fuga")
    
[/code]

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


CC BY-SA 3.0
2015-07-24T16:24:13.707
12664
2015-07-24T16:29:45.017
2015-07-24T16:29:45.017
5750
5750
12663
answer