コマンドプロンプトをコントロールするWindowsアプリ

  外部実行した cmd.exe の入出力ストリームを処理しています





  
' *****************************************************
' 外部実行したアプリの入出力ストリームを処理する
' CMD.EXE が使えると言う事は、コンソールアプリ
' のコントロールは自由
' ※ 他の対話型コンソールアプリに直接行っても良い
' *****************************************************
Imports System.IO

Public Class Form1

	Dim myProcess As New Process()

	Private Sub Form1_Load(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles MyBase.Load

		' *****************************************************
		' コマンドプロンプトをコントロールする
		' *****************************************************
		myProcess.StartInfo.FileName = "cmd.exe"

		' *****************************************************
		' Shell を使用しないので、この設定でウインドウを非表示
		' *****************************************************
		myProcess.StartInfo.CreateNoWindow = True

		' *****************************************************
		' 入・出力ストリームを扱う為の設定
		' *****************************************************
		myProcess.StartInfo.UseShellExecute = False
		myProcess.StartInfo.RedirectStandardInput = True
		myProcess.StartInfo.RedirectStandardOutput = True

		' *****************************************************
		' 開始
		' *****************************************************
		myProcess.Start()

		' *****************************************************
		' 出力ストリームを非同期に取得するハンドラの登録
		' *****************************************************
		AddHandler myProcess.OutputDataReceived, AddressOf OutputHandler

		' *****************************************************
		' 出力ストリームを非同期取得の開始
		' *****************************************************
		myProcess.BeginOutputReadLine()

	End Sub

	Private Sub Button1_Click(ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles Button1.Click

		' *****************************************************
		' 入力ストリームへコマンドを書き込み
		' *****************************************************
		myProcess.StandardInput.WriteLine(Me.TextBox1.Text)

	End Sub

	' *****************************************************
	' 出力ストリームを非同期に取得するハンドラ
	' *****************************************************
	Private Shared Sub OutputHandler(ByVal sendingProcess As Object, _
	 ByVal outLine As DataReceivedEventArgs)

		If Not String.IsNullOrEmpty(outLine.Data) Then
			Console.WriteLine(outLine.Data)
		End If

	End Sub

End Class
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加




SQLの窓  天気  IT用語辞典
Yahoo!ニュース  マルチ辞書
PHP マニュアル  Google URL短縮 


フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ