Batch ins Programm integrieren

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von St0on.

    Batch ins Programm integrieren

    Hallo VB'ler,

    ich hab grad überhaupt kein Anhaltspunkt, ob das möglich ist oder nicht ( hoffe schon ).
    Ich hab eine Batch, die im Grunde eine Java Datei mit der java.exe ( Version 7 ) mit einigen Parametern ausführt und dann sozusagen den Text ausgibt ( also ich seh dann im Commandfenster Informationen ).
    Nun will ich das alles nicht in einem Commandfenster sichtbar haben, sondern alles in einer Textbox und Buttons für einige Befehle nutzen.


    Die Batchdatei:

    Quellcode

    1. @ECHO OFF
    2. SET BINDIR=%~dp0
    3. CD /D "%BINDIR%"
    4. "%ProgramFiles%\Java\jre7\bin\java.exe" -Xincgc -Xmx1G -jar server.jar
    5. PAUSE

    Die Datei ist übrigens ein Server ( oder bzw. was ausgeführt wird ^^ )

    Ist das möglich?

    Danke im vorraus. :D
    Jetzt genau kann ich dein Problem nicht lösen, aber ich sehe das es der Bukkit serverstart ist.
    Ah da fällt mir ein mann kann per button sich sachen cheaten wenn man admin ist.
    Schau mal auf Youtube nach Minecraft Modder von Lukasoftware

    mgf. VbTutorials11
    Zwei Möglichkeiten:

    1. Wie petaod schrieb auf Batch-Dateien verzichten und cmd per Process.start mit den jeweiligen Argumenten öffnen (da kannst auch direkt das Fenster verstecken)
    2. Die Batch-Dateien in die Ressourceneinbinden, per Button extrahieren (Temp-Verzeichnis) und dann per Process.start aufrufen.
    Naja.
    Ich glaube du kannst eine Batch-Datei einbinden indem du sie mit dem Shell Befehl aufrufst so wie es Sinlyu gemacht hat.
    Integrier die Batch-Datei als Resource ins Projekt und versuch den Befehl:

    VB.NET-Quellcode

    1. Shell(My.Resources.BatchDatei)

    Ich weiß nicht ob es funktioniert! Hätte es nur so probiert :)
    Das enspricht alles irgendwie nicht meinen Vorstellungen. ( Naja, teilweise ^^ )

    Ich bin schon ganze Zeit am ausprobieren, wie ich nun mit der cmd kommunizieren kann...
    also wenn Text im Commandfenster ankommt, dass ich das sozusagen "abfangen" kann und diesen Text dann in eine Textbox schreiben könnte.

    Dann vllt. mit SendMessage könnt ich die Befehle hinsenden ( ? ).

    Wie mach ich das am besten?

    Wenn ich das mit der Kummunikation hinkriege, könnt ich es ja dann theoretisch versteckt ( Hide ) starten. ^^

    Danke schonmal für eure Hilfe :D.
    So in Etwa:

    VB.NET-Quellcode

    1. Dim batchfile As New Process
    2. batchfile.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    3. batchfile.StartInfo.FileName = Application.StartupPath & "\batchfile.bat"
    4. batchfile.StartInfo.UseShellExecute = False
    5. batchfile.StartInfo.RedirectStandardError = True
    6. batchfile.Start()
    7. Dim reader As StreamReader = batchfile.StandardError
    8. Do
    9. Dim Zeile As String = reader.ReadLine()
    10. Loop Until Zeile = String.Empty
    So naja ich hab nun den Inhalt von der Batch in VB umgeschrieben und das sieht so aus:
    ( Funktioniert genau gleich, wie davor mit Batch, also das Problem ist gleich geblieben ^^ )

    VB.NET-Quellcode

    1. pServer.StartInfo.WorkingDirectory = PfadServer
    2. pServer.StartInfo.FileName = FileIO.SpecialDirectories.ProgramFiles & "\Java\jre7\bin\java.exe"
    3. pServer.StartInfo.Arguments = "-Xincgc -Xmx1G -jar " & """" & PfadServer & "\craftbukkit-1.0.0-SNAPSHOT.jar" & """"
    4. pServer.StartInfo.UseShellExecute = False
    5. pServer.StartInfo.RedirectStandardOutput = True
    6. pServer.Start()


    Und so lese ich aus:

    VB.NET-Quellcode

    1. Dim reader As IO.StreamReader = pServer.StandardOutput
    2. For Each out As String In reader.ReadLine
    3. TextBox1.Text &= out
    4. Next


    Aber er gibt mir jeden Buchstaben einzelnt aus, ist das normal?
    Und dann kommt anstatt da Text sein sollte ein ">" ausgegeben...

    Danke für eure Hilfe ^^

    PS: Sry wegen meinem Schreibstil, bin bisschen müde... :rolleyes: