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



## Coalminer (18. März 2005)

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 ?


----------



## Flegmon (18. März 2005)

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.


----------



## Beichtpfarrer (20. März 2005)

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).


----------



## Endurion (20. März 2005)

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.


----------

