JAR Datei mit einem Bestimmten Pfad starten und eine Konsole dazu schalten

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von TheSCHFan#.

    JAR Datei mit einem Bestimmten Pfad starten und eine Konsole dazu schalten

    Hi Community,
    bin neu hier und mein erstes Theared ist das hier
    Ich wollte mal fragen wie ich eine JAR Datei von einem Pfad der in einer TextBox Steht mit einer Konsole starten?
    Oder bisschen leichter ich will eine Konsole für einen Minecraft Server mit VB erstellen wo man aber auch einen Button drücken solle um den Server zu starten bei CMD muss man das kommando benutzen: java -Xincgc -Xmx1G -jar craftbukkit.jar
    und das will ich auf VB übertragen aber ls Forms anwendung!


    Ich will dieses Kommando so ungefähr haben: java -Xincgc -Xmx1G -jar "{Pfad von der TextBox}\craftbukkit.jar"
    Ich hab das schon probiert aber dann konnte ich den server nicht mehr stoppen wenn ich in die kommando zeile stop geschrieben hab



    Bilder
    • Jetziger Status.png

      195,63 kB, 1.920×1.080, 296 mal angesehen
    Hi, sieh Dir die Process-Klasse an.
    Dort können Anwendungen mit Argumenten gestartet werden.
    Das sollte, oder ist was Du brauchst/brauchen könntest.
    HIER nochmal ein Link.

    Trotzdem rate ich Dir,DASS einmal anzuschauen.

    Mfg.eniking1888

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „enIking1998“ ()

    Das ist der einfache und richtige weg.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Imports System.Drawing
    3. Imports System.Windows.Forms
    4. Public Class Form1
    5. Dim p As New Process
    6. Public Sub New()
    7. InitializeComponent()
    8. SetProcess()
    9. BackgroundWorker1.WorkerReportsProgress = True
    10. BackgroundWorker2.WorkerReportsProgress = True
    11. BackgroundWorker1.RunWorkerAsync()
    12. BackgroundWorker2.RunWorkerAsync()
    13. TextBox1.Parent = Me
    14. RichTextBox1.Parent = Me
    15. TextBox1.Text = ""
    16. End Sub
    17. Private Sub SetProcess()
    18. p.StartInfo.FileName = "cmd.exe"
    19. p.StartInfo.Arguments = "/K"
    20. p.StartInfo.RedirectStandardError = True
    21. p.StartInfo.RedirectStandardInput = True
    22. p.StartInfo.RedirectStandardOutput = True
    23. p.StartInfo.CreateNoWindow = True
    24. p.StartInfo.UseShellExecute = False
    25. p.Start()
    26. End Sub
    27. Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    28. Do
    29. BackgroundWorker1.ReportProgress(0, p.StandardOutput.ReadLine)
    30. Loop
    31. End Sub
    32. Private Sub BackgroundWorker2_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles BackgroundWorker2.DoWork
    33. Do
    34. BackgroundWorker2.ReportProgress(0, p.StandardError.ReadLine)
    35. Loop
    36. End Sub
    37. Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
    38. RichTextBox1.SelectedText = DirectCast(e.UserState, String) + Environment.NewLine
    39. RichTextBox1.ScrollToCaret()
    40. End Sub
    41. Private Sub BackgroundWorker2_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles BackgroundWorker2.ProgressChanged
    42. RichTextBox1.SelectionColor = Color.Red
    43. RichTextBox1.SelectedText = DirectCast(e.UserState, String)
    44. RichTextBox1.ScrollToCaret()
    45. End Sub
    46. Private Sub Textbox1_KeyUp(ByVal sender As Object, ByVal e As KeyEventArgs) Handles TextBox1.KeyUp
    47. If e.KeyValue = 13 Then p.StandardInput.WriteLine(TextBox1.Text)
    48. End Sub
    49. End Class


    Das hab ich mal in einem anderen theared gesehen nur halt hier konnte ich den server nicht stoppen
    ^
    |
    Genau das ist falsch!
    Der TE hat keine Ahnung von der Process-Klasse bzw. ist Anfänger.
    Dann klatscht Du Ihm ein C&P-Code.

    Er soll ein vernünftiges Buch lesen.
    Wahrscheinlich kennt er nicht einmal die Differenz zwischen Integer und Boolean.

    Mfg.eniking1998
    @enIking1998
    Hm? Der TE hat bereits einen fertigen Code gefunden. Er sucht eine Möglichkeit zum Stoppen. Ich habe auf ein Projekt verwiesen, welches sowieso für jeden zugänglich ist (wer VS 2012 hat). Wo habe ich ihm bitte Code hingeklatscht?

    @TE
    Hier ist ein einigermaßen ordentlicher Code: [VB.NET] Minecraft Server Konsole Live auslesen

    @Der Rest
    Das ist kein fertiger Code, könnt ihr gerne ausprobieren.
    Mfg
    Vincent

    @enIking1998
    Bitte les du erst mal ein Buch, bevor du hier rummeckerst :P.

    @TheSCHFan#
    Schau dir doch einfach mal die Process-Klasse an, hier gibts eine komplette Beschreibung und weiter unten ein paar Codebeispiele.
    @nafets3646
    Ja, das tu ich oft, denn ich lese gern :) ...
    @TE ,
    Es gibst nichts Leichtes bzw. Schweres.
    Das was für Dich und der der Anderen schwer ist, ist für mich/uns leicht.
    Denn Dein Wissenstand ist nicht so hoch wie die von etwas länger dabei sind.

    Die Schwierigkeit liegt im Auge des Betrachters, als Beispiel.
    Deshalb ist meine Empfehlung:
    Sieh Dir die Signatur von ErfinderDesRades an.
    Dort findest Du nützliche Links.
    Weiteres kannst Du in MSDN über eine Klasse, mit Code veranschaulicht Dir die Methoden etc. ansehen.
    Und, HIER ,scrolll nach unten.

    Mfg.eniking1998

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „enIking1998“ ()

    Von dem Theared #HIER!#
    habe ich mal den Quellcode rausgesucht nur ein paar sachen werden bei mir Rot angezeigt (also ein Fehler)

    Im Screenshot sieht man das

    ich hab mal diesen Theared durchwühlt und hab nichts dazu gefunden ausser dass man eine RichTextBox braucht die Out put heisst
    Bilder
    • Unbenannt.png

      134,11 kB, 1.920×1.080, 231 mal angesehen
    Die Handles-Klausel erfordert eine WithEvents-Variable, die im enthaltenden Typ oder einem seiner Basistypen definiert wird.
    Kommt bei dem Rot Markiertem



    Private Sub p_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.OutputDataReceived
    Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    End Sub

    Private Sub p_ErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.ErrorDataReceived
    Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    End Sub
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich bin gerade verwirrt

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.IO
    3. Imports System.Diagnostics
    4. Imports System.ComponentModel
    5. Imports Microsoft.VisualBasic
    6. Public Class Form1
    7. Private Delegate Sub WriteA(ByVal Text As String)
    8. Private WithEvents p As Process
    9. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    10. p = New Process()
    11. p.StartInfo.FileName = Application.StartupPath & "\Start.bat"
    12. p.StartInfo.Arguments = ""
    13. p.StartInfo.RedirectStandardError = True
    14. p.StartInfo.RedirectStandardInput = True
    15. p.StartInfo.RedirectStandardOutput = True
    16. p.StartInfo.CreateNoWindow = True
    17. p.StartInfo.UseShellExecute = False
    18. p.Start()
    19. p.BeginErrorReadLine()
    20. p.BeginOutputReadLine()
    21. End Sub
    22. Private Sub p_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.OutputDataReceived
    23. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    24. End Sub
    25. Private Sub p_ErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.ErrorDataReceived
    26. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    27. End Sub
    28. Private Sub Write(ByVal Line As String)
    29. Konsole.Text &= Line
    30. End Sub
    31. Private Sub Senden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Senden.Click
    32. p.StandardInput.WriteLine(Befehl.Text) ' Hier bin ich noch am Überlegen weil das ned Funktioniert
    33. End Sub
    34. End Class


    hab ich jetzt aber was soll ich jetzt damit machen:

    VB.NET-Quellcode

    1. Public BefehlAusführen As System.IO.StreamWriter
    2. Sub Console()
    3. p = New Process()
    4. p.StartInfo.FileName = "C:\Program Files (x86)\Java\jre7\bin\java.exe"
    5. p.StartInfo.Arguments = "-Xmx1024M -Xms1024M -jar craftbukkit.jar -nojline"
    6. p.StartInfo.RedirectStandardError = True
    7. p.StartInfo.RedirectStandardInput = True
    8. p.StartInfo.RedirectStandardOutput = True
    9. p.StartInfo.CreateNoWindow = True
    10. p.StartInfo.UseShellExecute = False
    11. p.Start()
    12. p.BeginErrorReadLine()
    13. p.BeginOutputReadLine()
    14. BefehlAusführen = p.StandardInput
    15. End Sub
    16. Private Sub p_OutputDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.OutputDataReceived
    17. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    18. End Sub
    19. Private Sub p_ErrorDataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Handles p.ErrorDataReceived
    20. Me.Invoke(New WriteA(AddressOf Write), e.Data & Environment.NewLine)
    21. End Sub
    22. Private Sub Write(ByVal Line As String)
    23. Output.Text &= Line
    24. End Sub

    könnte mir jemand daraus einen fertigen quellcode schicken
    Genau das passiert, wenn ein Anfänger Copy&Pastet -Verwirrung.
    Nein, dass musst Du selbst zusammenschnipseln.

    Das ist sehr leicht.

    Du hast schon 2 Quellcodes.

    Nun sieh Dir an, wie identisch die Deklarationen sind, bzw. indentisch sind.
    Du musst das WithEvent + Instanz der Process()-Klasse dem der WindowsForms-Applikation global deklarieren.

    Ein WithEvent bietet Dir ein Ereignis, der jeweiligen Klasse an.
    Dabei bietet zB. WithEvent-Browser, das Document_Completed-Ereignis an.

    Mfg.eniking1998