externes Programm stürzt ab

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von loplott.

    externes Programm stürzt ab

    Hallo,
    ich bin Anfänger und auf folgendes Problem gestoßen:
    Mit shell() kann man ja externe Programme starten und das hat in der Vergangenheit auch immer gut geklappt,
    doch aus irgendeinem Grund stürzt das Programm, was ich starten will, immer ab.
    Es handelt sich um ein Spiel und wenn ich es auf normalem Wege öffne, funktioniert es auch.
    Mein Code sieht folgendermaßen aus:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Shell("C:\Program Files\Games\ANNO 1503\1503Startup.exe")
    3. Close()
    4. End Sub

    Ich hoffe jemand kann mir helfen.
    Was soll denn das Close() nach dem Shell()?
    Probier mal die Process-Klasse.
    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!
    ich glaube, da das programm dann im aktuellen verzeichnis (ort des starters) gestartet wird.
    du müsstest als parameter mitgeben, dass es im ordner "C:\Program Files\Games\ANNO 1503\" gestartet werden soll.
    mit ShellExecute z.b. kannst du diesen Parameter übergeben.
    Bei der Process Klasse kenn ich mich nicht aus...
    Ich habe die Erfahrung gemacht, dass es mit der manuellen Angabe computerspezifischer Pfade nicht geht.

    Krieg mit SpecialFolders den Pfad des Programmordners raus und verbinde die ganze Geschichte anschließend mit Path.Combine().
    „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.
    Also ich bin ziemlicher Anfänger, daher verstehe ich das mit SpecialFolders und Path.Combine irgendwie nicht.
    Und process.start funktioniert eben auch nicht.
    Und dieser Versuch:

    VB.NET-Quellcode

    1. System.Diagnostics.Process.Start("1503Startup.exe")

    und Projekt in den .exe-Ordner hineinkopieren funktioniert auch nicht.

    loplott schrieb:

    Also ich bin ziemlicher Anfänger, daher verstehe ich das mit SpecialFolders und Path.Combine irgendwie nicht.
    Und process.start funktioniert eben auch nicht.
    Und dieser Versuch:

    VB.NET-Quellcode

    1. System.Diagnostics.Process.Start("1503Startup.exe")

    und Projekt in den .exe-Ordner hineinkopieren funktioniert auch nicht.


    Zeig doch mal deinen kompletten Code vom Programm ich habe:

    VB.NET-Quellcode

    1. System.Diagnostics.Process.Start("1503Startup.exe")

    mit verschiedenen Spielen getestet es funktioniert irgendwas machst du falsch.

    loplott schrieb:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. Shell("C:\Program Files\Games\ANNO 1503\1503Startup.exe")
    3. Close()
    4. End Sub

    Setze mal auf Close einen Haltepunkt und finde heraus, ob das Abstürzen mit dem Close() zusammenhängt.
    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!
    Danke erstmal für die Antworten!
    Also der Reihe nach:

    Techniker schrieb:


    Zeig doch mal deinen kompletten Code vom Programm ich habe:

    VB.NET-Quellcode

    1. System.Diagnostics.Process.Start("1503Startup.exe")


    mit verschiedenen Spielen getestet es funktioniert irgendwas machst du falsch.
    Da das Programm noch nicht sonderlich weit ist, sieht der Code erst so aus, wie ich ihn hier gepostet habe.
    System.Diagnostics.Process.Start("1503Startup.exe") zeigt er an, dass das Objekt nicht gefunden werden kann,
    obwohl ich mein Projekt in den .exe Ordner getan habe.

    petaod schrieb:

    "normal" heisst vermutlich durch Klicken einer Verknüpfung.
    Schau doch mal, welcher Aufruf in den Eigenschaften der Verknüpfung steht.
    Normal heißt, das ich direkt in den Ordner von Anno gehe und auf die .exe Datei klicke.

    ~blaze~ schrieb:

    Also, wenn der Einstiegspunkt der 1503Startup.exe nicht irgendwelche komischen Parameter hat (dann wäre es auch so aus dem Explorer nicht startbar), dürfte es zumindest beim Starten keine Probleme geben. Es wäre natürlich hilfreich, die Fehlermeldung zu kennen.
    Also ich weiß nicht, ob es solche Parameter gibt. Es gibt auch keine Fehlermeldungen. Anno öffnet sich kurz und stürzt ab, bevor der Vorspann kommt.

    RodFromGermany schrieb:

    Setze mal auf Close einen Haltepunkt und finde heraus, ob das Abstürzen mit dem Close() zusammenhängt.
    Ich habe das Close() zum Test einmal ganz weggelassen, und es ist alles unverändert geblieben (außer natürlich, dass Form1 sich nicht schließt).