An Externe Anwendung Argumente weitergeben

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Samus Aran.

    An Externe Anwendung Argumente weitergeben

    Hallo Leute,

    Befor ihr weiterlest
    Ich habe in diesem Forum bereits nach meinem Problem gesucht (was Argumente weitergeben angeht) auch was gefunden. Jedoch löst dies das Problem nicht. DIe Argumente werden nicht richtig weitergegeben.

    Ich Versuche für das inzwischen schon ältere Spiel Star Wars Battlefront II einen Servermanager unter vb zu programmieren.

    Derzeit versuche ich den Server über diesen Code zu starten

    VB.NET-Quellcode

    1. Dim Server as Process
    2. Server.StartInfo.FileName = "Gameserver\BattlefrontII.exe"
    3. Server.StartInfo.Arguments= String.Format("/win /norender /nosound /autonet dedicated /resolution 640 480 /netregion EUR")
    4. Server.Start()


    Hierbei startet der Server jedoch nicht richtig. entweder er schaltet sich sofort wieder aus oder lädt nicht richtig.

    Wenn ich das ganze über eine batch datei mache funktipniert es. Hier der Code für die .bat

    VB.NET-Quellcode

    1. \Gameserver\BattlefrontII.exe /win /norender /nosound /autonet dedicated /resolution 640 480 /netregion EUR

    Die Battlefront exe muss mit den befehlen dahinter gestartet werden sonst geht es nicht. Die konfig wird automatisch gelden wenn ich es über das cmd versuche bei vb kommt er eig noch nicht mal bis dahin.
    Es ist jedoch wichtig das der server über das programm gestartet wird damti er auch wieder ausgeschaltet werden kann und man unter umständen auch mehr als einen server laufen lassen könnte.

    Hoffe auf eure Hilfe
    String.Format weil es das letzte war, was ich ausprobiert hatte.
    vorher war der Teil so

    VB.NET-Quellcode

    1. Server.StartInfo.Arguments = "/win /norender /nosound /autonet dedicated /resolution 640 480 /netregion EUR"


    Es funktioniert aber auch nicht wenn ich es als New Process definiere habe auch den alten code-schnipsel getestet also ohne string.Format
    Das verzeichnis Existiert wenn ich es so angebe

    VB.NET-Quellcode

    1. Server.StartInfo.WorkingDirectory = "\Gameserver\"


    bekomme ich keine Fehlermeldung.
    wie gesagt als new Process ist es jetzt schon und es schließt sich immer noch sofort. Das angeben des Kompletten Pfades hilft auch nicht schließt sich imemr noch automatisch.
    Hab gefunden was das problem war habe zwar die working directory angegeben aber nicht den ganzen pfad.

    jetzt mit kompletten pfad geht es.

    Könnte mir einer sagen wie es ohne den kompletten pfad funktioniert?

    VB.NET-Quellcode

    1. Dim Server As New Process
    2. Server.StartInfo.FileName = "F:\Eigene Dateien\Visual Studio 2010\Projects\servermanager\servermanager\bin\Debug\Gameserver\BattlefrontII.exe"
    3. Server.StartInfo.Arguments = " /win /norender /nosound /autonet dedicated /resolution 640 480 /netregion EUR"
    4. Server.StartInfo.WorkingDirectory = "F:\Eigene Dateien\Visual Studio 2010\Projects\servermanager\servermanager\bin\Debug\Gameserver\"
    5. Server.Start()


    So funktioniert es

    VB.NET-Quellcode

    1. Dim Server As New Process
    2. Server.StartInfo.FileName = Path.Combine({Application.StartupPath, "Gameserver\BattlefrontII.exe"})
    3. Server.StartInfo.Arguments = " /win /norender /nosound /autonet dedicated /resolution 640 480 /netregion EUR"
    4. Server.StartInfo.WorkingDirectory = Path.Combine({Application.StartupPath, "Gameserver"})
    5. Server.Start()
    Ok danke hat leider mit Path.combine nicht richtig geklapt das teil is trotzdem wieder zu gegangen habe es jetzt über nen string gelöst der beim laden des projektes das verzeichnis ausliest und nutze das dann als basis und häng den rest dran

    VB.NET-Quellcode

    1. Dim verzeichniss As String
    2. verzeichniss = Path.GetDirectoryName(Application.ExecutablePath)
    3. Server.StartInfo.FileName = verzeichniss & "\Gameserver\BattlefrontII.exe"