Mit der Funktion ShellExecute können andere Programme oder Dateien und die damit verbundenen Programme gestartet werden. Die Funktion erwartet folgende Parameter:
| HWND hwnd | Zeiger auf das Elternfenster |
| LPCTSTR lpop | Operationscode: 'open' = öffnet eine Datei 'print' = Druckt die Datei 'explore' = öffnet den Ordner |
| LPCTSTR file | Zeiger auf den Dateinamen oder Ordner |
| LPCTSTR para | Wenn 'file' ein Programm ist, können hier die Kommandozeilenparameter definiert werden |
| LPCTSTR direc | Das ggf. ausgewählte Directory |
| INT show | In welcher Form das Programm gestartet werden soll
SW_HIDE = Fenster versteckt SW_SHOWNORMAL = Fenster normal anzeigen |
Beispiele (Dabei wird davon ausgegangen, dass die Anwendung die die Funktion aufruft "MeineAnwendung" heisst:
Das folgende Beispiel öffnet eine HTML Datei (MeineHTMLDatei.html)
int aus=(int)ShellExecute(MeinFormular->Handle,"open","MeineHTMLDatei.html",NULL,NULL,SW_SHOWNORMAL);
if(aus<=32)
Application->MessageBox("Browser nicht installiert","HTML-Datei starten",MB_APPLMODAL|MB_ICONSTOP|MB_OK);
Das folgende Beispiel öffnet das Programm TEST.EXE und übergibt als Parameter den Wert "parameter1":
int aus=(int)ShellExecute(MeinFormular->Handle,0,"TEST.EXE","parameter1",0,SW_SHOWNORMAL);
if(aus<=32)
Application->MessageBox("Fehler bei Ausführung des Progammes","Programm starten",MB_APPLMODAL|MB_ICONSTOP|MB_OK);
In der Regel liegen Dateinnamen u.a. als ANSI-String vor. Die Funktion erwartet jedoch Zeiger auf Strings. Dazu kann die Methode c_str() genutzt werden.
Beispiel:
String datei="MeineHTMLDatei.html";
int aus=(int)ShellExecute(MeinFormular->Handle,"open",datei.c_str(),NULL,NULL,SW_SHOWNORMAL);
if(aus<=32)
Application->MessageBox("Browser nicht installiert","HTML-Datei starten",MB_APPLMODAL|MB_ICONSTOP|MB_OK);
Siehe auch Wie startet man ein Programm mit CREATE PROCESS?