WinExec, ShellExecute, System("...") Unterschied ?

Coalminer

Mitglied
Hi,

ich weiss es gibt etliche Threads zum Thema "Wie öffne ich ne .exe aus C++.
Meine Frage geht allerdings mehr ins Detail.

Was ist der Unterschied zwischen den dreien:

WinExec
ShellExecute
System()

und vorallem, wann setz ich sinnvollerweise welchen der drei Befehle ein ?
 
Hallo,

WinExec benötigt nur zwei Parameter und zwar die Commande Line ( Exe-Datei und Übergabeparameter ) und den Window Style für das neue Fenster, der dem Programm dann als CmdShow übergeben wird.

ShellExecute braucht ganze 6 Parameter und zwar das Parent Window, als 2. was mit der Datei gemacht werden soll ( ShellExecute kann z.B. auch eine Datei drucken ), dann Dateiname, Übergabeparamter, Standartpfad und als letztes wieder CmdShow.

system wird nur eine Zeichenkette übergeben. Die Zeichenkette beinhaltet Befehle, die direkt an das System gehen. Programmaufrufe mit system sind wie Programmaufrufe mit Hilfe von .bat Dateien.
 
Zuletzt bearbeitet:
WinExec ist veraltet, obsolet...
msdn hat gesagt.:
This function is provided only for compatibility with 16-bit Windows

Ich würde ShellExecute empfehlen, damit kann man auch Dateien öffnen und das Verb spezifizieren, ich finde, es einfach ist die perfekte Funktion...
Schwierig zu bedienen ist sie auch nicht.

system dagegen ist ziemlich hässlich. Ich glaube, für system-Befehl wird sogar eine Konsole benötigt (erstellt).
 
Ich empfehle auch ShellExecute, WinExec geht für Notfälle.
system halte ich für gemeingefährlich. Das startet A) einen neuen Prozess und startet dann B) das Programm, das zufällig den übergebenen Namen hat. Könnte irgendwas sein. Und nicht unbedingt das, das man erwartet.
 
Zurück