Absturz beim Programm ausführen

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Ruerte.

    Absturz beim Programm ausführen

    Ich versuche gerade ein programm mit folgender Command Line zu starten

    Quellcode

    1. "C:\Riot Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.94\deploy\League of Legends.exe" "8394" "LoLLauncher.exe" "" "spectator spectator.euw1.lol.riotgames.com:80 9KoRzWbuZ6yZejon5v5PtOkHuFsHYRtd 2191471208 EUW1"

    Den Sinn für die Command Line kann man hier entnehmen
    Wenn ich sie über mein Programm starten möchte, kommt immer ein Fehlermeldung vom Spiel, aber wenn ich die Command line mit Windows+R ausführe geht es ohne Probleme.

    Mein momentaner Code

    Quellcode

    1. Shell("""" & LoLPath & """" & " " & """" & maestro & """" & " " & """" & launcher & """" & " " & """" & Empty & " " & """" & "spectator" & " " _
    2. & domain & ":" & port & " " & EncryptKey & " " & GameID & " " & ServerSpec & """")

    Mit dessen Ausgabe habe ich übrigens den Versuch mit Windows+R getätigt ^^


    Würde mich freuen, wenn mir das jemand beantworten kann^^

    wamborambo schrieb:

    Mein momentaner Code
    Pack mal jedes einzelne Argument in eine List(Of String) und generiere Dir aus dieser den Aufruf-String:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim ll As New List(Of String)
    3. ll.Add("C:\Riot Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.94\deploy\League of Legends.exe")
    4. ll.Add("8394")
    5. ll.Add("LoLLauncher.exe")
    6. ll.Add("spectator spectator.euw1.lol.riotgames.com:80 9KoRzWbuZ6yZejon5v5PtOkHuFsHYRtd 2191471208 EUW1")
    7. Dim txt = ""
    8. For Each part In ll
    9. txt &= """" & part & """ "
    10. Next
    11. MessageBox.Show(txt)
    12. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    wamborambo schrieb:

    immer noch.
    Mach mal eine Batch-Datei, mit der der Start funktioniert.
    Oder
    Nimm statt Shell die Process-Klasse, gib ihr die Argumente und den Startpfad, das ist es wahrscheinlich:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim ll As New List(Of String)
    3. 'll.Add("C:\Riot Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.94\deploy\League of Legends.exe")
    4. ll.Add("8394")
    5. ll.Add("LoLLauncher.exe")
    6. ll.Add("spectator spectator.euw1.lol.riotgames.com:80 9KoRzWbuZ6yZejon5v5PtOkHuFsHYRtd 2191471208 EUW1")
    7. Dim arguments = ""
    8. For Each part In ll
    9. arguments &= """" & part & """ "
    10. Next
    11. 'MessageBox.Show(txt)
    12. Dim pr = New Process
    13. pr.StartInfo.FileName = "C:\Riot Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.94\deploy\League of Legends.exe"
    14. pr.StartInfo.Arguments = arguments
    15. pr.StartInfo.WorkingDirectory = "C:\Riot Games\League of Legends\RADS\solutions\lol_game_client_sln\releases\0.0.1.94\deploy\" ' dies hier
    16. pr.Start()
    17. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    wamborambo schrieb:

    woran das jetzt genau liegt
    Shell() startet den Prozess vom aktuellen Verzeichnis aus. Wenn das Programm seine eigenen Daten mit relativem Pfad einlesen will, findet es diese im Verzeichnis Deines Programms nicht vor, Du müsstest explizit in dieses Verzeichnis und zurück wechseln, sonst würde Dein Programm seine Daten mit relativem Pfad nicht mehr finden.
    Die Process-Klasse bietet die Möglichkeit, dem Programm zu sagen, in welchem Verzeichnis es starten soll, und Du musst Dich um nix weiter kümmern.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!