2013-08-25 2 views
0

정말 도움이 필요합니다! 나는 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

관련 문제