Anwendung ausführen

  • Aufruf-Beispiele:
AnsiString FileName = "c:windowscalc.exe";
RunApplication(FileName.c_str(), 0);

RunApplication("mailto:hallihallo@mail.de", 0);

RunApplication("http://www.google.de", 0);

RunApplication("meine.exe", "1 2 3");

RunApplication("net", "use");

RunApplication("format", "a: /s");
  • Code:
// führt per ShellExecute die Anwendung, die mit der Dateiendung von FileName
// assoziert ist aus, FileParam spezifiziert zusätzliche Aufrufparameter
void RunApplication(LPCTSTR FileName, LPCTSTR FileParam)
{
    int ret = (int) ShellExecute(0, "open", FileName, FileParam, 0, SW_SHOWNORMAL);

    if (ret <= 32)
    {
        AnsiString msg;

        switch(ret)
        {
            case ERROR_FILE_NOT_FOUND, SE_ERR_FNF :
            msg = &quot;Die angegebene Datei '&quot; + AnsiString(FileName) + &quot;' wurde nicht gefunden!&quot;;
            break;

            case ERROR_PATH_NOT_FOUND, SE_ERR_PNF :
            msg = &quot;Der Pfad zur Datei '&quot; + AnsiString(FileName) + &quot;' wurde nicht gefunden!&quot;;
            break;

            case ERROR_BAD_FORMAT :
            msg = &quot;Die aufgerufene Anwendung ist ungültig oder beschädigt!&quot;;
            break;

            case SE_ERR_ACCESSDENIED, SE_ERR_SHARE :
            msg = &quot;Der Zugriff auf die Datei '&quot; + AnsiString(FileName) + &quot;' wurde vom Betriebssystem verweigert!&quot;;
            break;

            case SE_ERR_ASSOCINCOMPLETE, SE_ERR_NOASSOC :
            msg = &quot;Der angegebene Dateityp ist auf Ihrem Computer keiner Anwendung zugeordnet!&quot;;
            break;

            case 0, SE_ERR_OOM :
            msg = &quot;Zum Ausführen der Anwendung ist nicht genügend Arbeitsspeicher frei!&quot;;
            break;

            default : msg = &quot;Datei '&quot; + AnsiString(FileName) + &quot;' konnte nicht geöffnet werden!&quot;;
        }

        Application->MessageBox(msg.c_str(), &quot;Fehler&quot;, MB_OK + MB_ICONERROR);
    }
}