2013-08-25 30 views
0

真的需要幫助!我想知道如何將jar輸出到VB 2008中的文本框中。 另外我想發送命令給它(例如CMD會在使用此命令時: C:\ Windows \ System32 \ java.exe -Xms128M -Xmx1024M -jar Craftbukkit.jar)在vb中獲取Jar輸出併發送命令

回答

1

下面是一個概念驗證。你必須根據自己的願望和願望調整它。這是什麼呢:

  1. 在後臺
  2. 開始讀取輸出和錯誤流啓動進程。
  3. 您可以通過文本框發送命令(並單擊按鈕)。
  4. 將輸出/錯誤寫入輸出文本框。

此外,這段代碼僅僅是一個概念證明,它遠遠沒有完成(但它足以證明)。你將不得不添加一些額外的檢查等,使其「防水」。

Public Class MyForm 
    Private WithEvents _CmdProcess As Process 
    Private Delegate Sub DisplayTextDelegate(text As String) 

    Private Sub MyForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
     Dim processInfo As New ProcessStartInfo() 
     processInfo.FileName = "cmd" 
     processInfo.RedirectStandardError = True 
     processInfo.RedirectStandardInput = True 
     processInfo.RedirectStandardOutput = True 
     processInfo.UseShellExecute = False 
     processInfo.CreateNoWindow = True 

     _CmdProcess = Process.Start(processInfo) 
     _CmdProcess.BeginOutputReadLine() 
     _CmdProcess.BeginErrorReadLine() 
    End Sub 

    Private Sub MyForm_Disposed(sender As System.Object, e As System.EventArgs) Handles MyBase.Disposed 
     If _CmdProcess IsNot Nothing Then 
      _CmdProcess.Close() 
     End If 
     _CmdProcess = Nothing 
    End Sub 

    Private Sub btnExecute_Click(sender As System.Object, e As System.EventArgs) Handles btnExecute.Click 
     If Not String.IsNullOrWhiteSpace(txtCommand.Text) Then 
      Dim inputStream As System.IO.StreamWriter = _CmdProcess.StandardInput 
      inputStream.WriteLine(txtCommand.Text) 
      inputStream.Flush() 
     End If 
    End Sub 

    Private Sub CmdProcess_ErrorDataReceived(sender As System.Object, e As System.Diagnostics.DataReceivedEventArgs) Handles _CmdProcess.ErrorDataReceived 
     Invoke(New DisplayTextDelegate(AddressOf DisplayText), Environment.NewLine) 
     Invoke(New DisplayTextDelegate(AddressOf DisplayText), "Error!") 
     Invoke(New DisplayTextDelegate(AddressOf DisplayText), e.Data) 
    End Sub 

    Private Sub CmdProcess_OutputDataReceived(sender As System.Object, e As System.Diagnostics.DataReceivedEventArgs) Handles _CmdProcess.OutputDataReceived 
     Invoke(New DisplayTextDelegate(AddressOf DisplayText), e.Data) 
    End Sub 

    Private Sub DisplayText(text As String) 
     txtOutput.AppendText(Environment.NewLine) 
     txtOutput.AppendText(text) 
    End Sub 
End Class 
+0

正是我想要的! – THUND3R

+0

@ THUND3R如果這是您的問題的答案,您能否將其標記爲答案? – Styxxy

相關問題