none
Problem bei ausführen einer EXE-Datei. RRS feed

  • Frage

  • Ich habe ein Problem:

    Ich habe mein Programm, also die EXE. In dem selben Ordner befinden sich 6 weitere Ordner und in jedem Ordner gibt es je eine Datei, die "Pong.exe" heißt. Wenn ich eine Exe-Datei dann ausführen möchte (System.Diagnostics.Process.Start("0\\Pong.exe");), funktioniert das nicht, also der Prozess startet für 2 Sekunden und dann, ohne das das Programm startet, wird der Prozess wieder geschlossen.

    Wenn ich eine Exe-Datei sofort in dem Ordner habe, wo die Exe von meinem Programm habe (System.Diagnostics.Prozess.Start("Pong.exe");) dann öffnet das Programm die Datei und es funktioniert.

    Jetzt habe ich keine Ahnung, wo das Problem liegt.

    Ich hoffe ihr könnt mir helfen

    Donnerstag, 10. Februar 2011 07:32

Antworten

  • Hallo M.,

    • > (System.Diagnostics.Process.Start("0\\Pong.exe");

    das ist sehr unsauber, weil es vom aktuellen Verzeichnis abhängt (was sich das durch verschiedenste Umstände ändern kann) - das vermeide möglichst immer!

    Hier eine sauberere Implementation:

    using System.Diagnostics;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WinOrdner
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
     
       NeuesProgrammAufrufen("0", "Pong.exe");
      }
    
      private void NeuesProgrammAufrufen(string ordner, string programmName)
      {
       ProcessStartInfo psi = new ProcessStartInfo();
       psi.WorkingDirectory = Path.Combine(Application.StartupPath, ordner);
       psi.FileName = Path.Combine(psi.WorkingDirectory, programmName);
       Process.Start(psi);
      }
     }
    }
    

    ciao Frank
    Donnerstag, 10. Februar 2011 08:32
  • Hallo,

    da kann man nur raten:

    Vermutlich findet das Programm (Spiel?) benötigte Dateien nicht.
    Du solltest über die Eingabeaufforderung (cmd.exe) testen, ob das gleiche Verhalten auch dort auftritt.
    Wechsele dazu in das Verzeichnis und starte das Programm ebenso mit [Verzeichnis]\pong.exe

    Wenn ja, musst Du herausfinden, welche Dateien zusätzlich in dem Verzeichnis benötigt werden.

    Mit C#/.NET hat das dann aber nichts mehr zu tun.

    Gruß Elmar

    Donnerstag, 10. Februar 2011 08:18
    Beantworter

Alle Antworten

  • Hallo,

    da kann man nur raten:

    Vermutlich findet das Programm (Spiel?) benötigte Dateien nicht.
    Du solltest über die Eingabeaufforderung (cmd.exe) testen, ob das gleiche Verhalten auch dort auftritt.
    Wechsele dazu in das Verzeichnis und starte das Programm ebenso mit [Verzeichnis]\pong.exe

    Wenn ja, musst Du herausfinden, welche Dateien zusätzlich in dem Verzeichnis benötigt werden.

    Mit C#/.NET hat das dann aber nichts mehr zu tun.

    Gruß Elmar

    Donnerstag, 10. Februar 2011 08:18
    Beantworter
  • Hallo M.,

    • > (System.Diagnostics.Process.Start("0\\Pong.exe");

    das ist sehr unsauber, weil es vom aktuellen Verzeichnis abhängt (was sich das durch verschiedenste Umstände ändern kann) - das vermeide möglichst immer!

    Hier eine sauberere Implementation:

    using System.Diagnostics;
    using System.IO;
    using System.Windows.Forms;
    
    namespace WinOrdner
    {
     public partial class Form1 : Form
     {
      public Form1()
      {
       InitializeComponent();
     
       NeuesProgrammAufrufen("0", "Pong.exe");
      }
    
      private void NeuesProgrammAufrufen(string ordner, string programmName)
      {
       ProcessStartInfo psi = new ProcessStartInfo();
       psi.WorkingDirectory = Path.Combine(Application.StartupPath, ordner);
       psi.FileName = Path.Combine(psi.WorkingDirectory, programmName);
       Process.Start(psi);
      }
     }
    }
    

    ciao Frank
    Donnerstag, 10. Februar 2011 08:32