Externes Programm starten?



  • Hi,

    ich habe hier schonmal einen Thread erstellt in dem es über dieses Thema ging. Also ich habe bspw. ein Spiel das man wie gewöhnlich mit einer .exe Datei startet, wenn ich jetzt bspw.

    Application::Run("D:/Spielname/spielstartdatei.exe");
    

    hab und diese Ausführe, dann kopiert er die .exe Datei in den Solution Ordner von meinem Prog. und will es dann starten ... kann er aber nicht, da ihn die ganzen configs fehlen die er laden muss da er ja nur die .exe Datei kopiert. Also wollte ich euch nun fragen wie ich das machen kann, das er die datei wirklich aus den angegebenen Pfad startet. Der alte Thread wurde mir beantwortet, dass man es mit ShellExecute machen könnte aber ich mal in der msdn library nachgeschaut habe, aber irgendwie mit ShellExecute nicht ganz peil. Könnte mir irgendeiner eine alternative nennen oder mir ein bspw. mit ShellExecute bzgl. meinem Problem schreiben?

    Vielen vielen dank im voraus schonmal



  • hError = ShellExecute(NULL, "open", m_strPfadZurExe, m_UebergabeParameterAnExe, NULL, SW_SHOWMAXIMIZED);
    

    s.o. wenn ich alles richtig gemacht habe, dann ist m_strPfadZurExe der pfad incl name der exe (C:\ggh\ggh.exe --- korrekte eingabe der backslashes beachten!) und m_UebergabeParameterAnExe sind dann die uebergabeparameter als CString (-i -12 -ggh).

    Esco

    die fehlerbehandlung sieht bei mir forlgendermassen aus:

    HINSTANCE hError;
    long nError;
    // obiger Quellcode steht hier!
    nError = (long)hError;
      if (nError < 33)
      {
        if (nError == ERROR_FILE_NOT_FOUND)
          AfxMessageBox("<Applikationsname> konnte im angegebenen Pfad nicht gefunden werden.");
        else if (nError == ERROR_PATH_NOT_FOUND || nError == SE_ERR_PNF )
          AfxMessageBox("Der angegebene Pfad konnte nicht gefunden werden.");
        else if (nError == SE_ERR_ACCESSDENIED)
          AfxMessageBox("Das Betriebsystem hat den Zugriff verweigert.");
        else if (nError == SE_ERR_ASSOCINCOMPLETE)
          AfxMessageBox("Fehler in Pfad- oder Dateiname.");
        else
          AfxMessageBox("Fehler beim Aufruf von <Applikationsname> aufgetreten.");
      }
    


  • ahh ich habs schon, hat sich erledigt ... sry 4 sinnlos thread. Falls noch jemand dieses Problem hatte

    beispielsweise:

    Process^ spiel = gcnew Process();
    
    spiel->StartInfo->WorkingDirectory = L"C:/Spielverzeichniss";
    spiel->StartInfo->FileName = L"spielStartDatei.exe";
    spiel->Start();
    

Anmelden zum Antworten