プログラミングメモ

思った通りに動いてくれて嬉しかったこと

VB.Netよりコマンドを実行

概要

VB.Netよりコマンドを実行し、結果をTextで返します。

 Function Runcmd(strcmd As String) As String

    'Processオブジェクト
    Dim proc As New System.Diagnostics.Process()

 

    With proc.StartInfo

        'ComSpecパスの取得
        .FileName = System.Environment.GetEnvironmentVariable("ComSpec")

 

        '出力読取り可能化
        .UseShellExecute = False
        .RedirectStandardOutput = True
        .RedirectStandardInput = False

 

        'コマンドプロンプトのウィンドウ非表示
        .CreateNoWindow = True

 

        'コマンド(/c:コマンド実行後、コマンドを実行したcmd.exeを終了)
        .Arguments = "/c " & strcmd
    End With

 

    'コマンド実行
    proc.Start()

 

    '実行結果取得
    Dim result As String = proc.StandardOutput.ReadToEnd()


    proc.WaitForExit()
    proc.Close()

    Return result

End Function

 解説

コマンド(String)を引数としてRuncmdを呼びます。

戻り値としてテキストで結果が返ってきます。

 

先日、ご紹介したフリーソフト

ServerLogon(ソフトと呼べる程のものではありませんが…)

は、net use~を引数としてRuncmdを呼んでいます。

megrez11278.hateblo.jp

 Runcmd呼び出しサンプル

準備

WindowsフォームVBプロジェクトのフォーム上に

Button.Button1(Runcmd呼び出し用)

TextBox.TextBox1(結果表示用)

をセットしてください。

 

TextBox1は、MultilineTrueにしましょう。

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click

    Dim text As String

    'コマンド

    text = Runcmd("ipconfig /all")
    TextBox1.Text = text

End Sub

 実行結果

f:id:megrez11278:20170821200910j:plain