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");
// 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 = "Die angegebene Datei '" + AnsiString(FileName) + "' wurde nicht gefunden!";
break;
case ERROR_PATH_NOT_FOUND, SE_ERR_PNF :
msg = "Der Pfad zur Datei '" + AnsiString(FileName) + "' wurde nicht gefunden!";
break;
case ERROR_BAD_FORMAT :
msg = "Die aufgerufene Anwendung ist ungültig oder beschädigt!";
break;
case SE_ERR_ACCESSDENIED, SE_ERR_SHARE :
msg = "Der Zugriff auf die Datei '" + AnsiString(FileName) + "' wurde vom Betriebssystem verweigert!";
break;
case SE_ERR_ASSOCINCOMPLETE, SE_ERR_NOASSOC :
msg = "Der angegebene Dateityp ist auf Ihrem Computer keiner Anwendung zugeordnet!";
break;
case 0, SE_ERR_OOM :
msg = "Zum Ausführen der Anwendung ist nicht genügend Arbeitsspeicher frei!";
break;
default : msg = "Datei '" + AnsiString(FileName) + "' konnte nicht geöffnet werden!";
}
Application->MessageBox(msg.c_str(), "Fehler", MB_OK + MB_ICONERROR);
}
}