CreateProcess: Unterschied zwischen ApplicationName und CommandLine
-
Ich verstehe irgendwie nicht den Unterschied zwischen den Parametern 'lpApplicationName' und 'lpCommandLine' bei der Funktion CreateProcess Funktion. Kann mal jemand kurz darüber was erzählen? Wann benutzt man welchen Parameter?
-
-
Wenn Du unter "ApplicationName" was angibst, dann solltest Du nicht vergessen, genau das gleiche auch in CommandLine ganz am Anfang reinzuschreiben.
Ich Rate immer: Lass ApplicationName auf NULL und verwende nur CommandLine.Wenn Du Dokumente oder andere Dinge starten willst, verwenden ShellExecute
-
Ich Rate immer: Lass ApplicationName auf NULL und verwende nur CommandLine.
Wenn man dem Prozess keine Argumente übergeben braucht, warum sollte man dann CommandLine nutzen? Da muss man doch beachten das der Speicher auch beschreibbar ist und ist somit mehr Aufwand!?
-
hmmmmmmmm schrieb:
Ich Rate immer: Lass ApplicationName auf NULL und verwende nur CommandLine.
Wenn man dem Prozess keine Argumente übergeben braucht, warum sollte man dann CommandLine nutzen?
Das Problem ist nur, dass einige Programme davon ausgehen, dass als erstes Argument der eigene Prozess-Name auftaucht. Und dass ist dann eben nicht der Fall.
hmmmmmmmm schrieb:
Da muss man doch beachten das der Speicher auch beschreibbar ist und ist somit mehr Aufwand!?
Ja leider... ich verstehe bis heute nicht, warum das so (bescheuert) gemacht ist.
Auch waren alle Beispiele in der MSDN bisher falsch, wenn sie mit Unicode übersetzt wurden! Die Beispiele erzeugen (mit VC8 compiliert) haben immer eine Access-Violation erzeugt!
Es scheint so, dass sie dies endlich korrigiert haben und jetzt immer "_tcsdup" verwenden:
http://msdn.microsoft.com/library/en-us/dllproc/base/creating_processes.asp(aber natürlich haben sie in den Beispielen jetzt ein "free" vergessen... naja, was solls...
-
Hmm, das verstehe ich nicht wirklich, denn:
The lpCommandLine parameter can be NULL. In that case, the function uses the string pointed to by lpApplicationName as the command line.
-
Das gilt aber nur, wenn Du bei commandLine NULL angibst! Wenn Du beide != NULL hast, musst Du darauf achten...
-
warum ändert eigentlich nur die unicode-version von CreateProcess den string?