Entwickler-Ecke

Windows API - createprocess welche startparameter


nepleurepas - Sa 05.04.08 20:32
Titel: createprocess welche startparameter
Hallo,
ich möchte createprocess verwenden. Was muss an zweiter Stelle, also bei command line für eine angabe rein? Habs mal mit 'open' von shellexecute her kommend versucht...

thx stefan


AHT - Sa 05.04.08 21:33

Dateiname und Pfad der zu startenden EXE.


nepleurepas - Sa 05.04.08 22:05

user profile iconAHT hat folgendes geschrieben:
Dateiname und Pfad der zu startenden EXE.

ja des wars ja grad nich, den pfad hat ich ja schon an erster stelle. aber mit '' hats geklappt :-)


delphijanka - Di 10.11.09 13:40

Bei mir sieht es folgendermaßen aus:

var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;

FillChar(StartInfo,SizeOf(TStartupInfo), #0);
FillChar(ProcInfo,SizeOf(TProcessInformation), #0);
StartInfo.cb := SizeOf(TStartupInfo);

CreateOK := CreateProcess(
nil,
PChar(EXE_FULL_ADRESS + ' ' + FILE_FULL_ADRESS),
nil,
nil,
false,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
nil,
StartInfo,
ProcInfo);


Das programm tut aber nicht das, was es tun soll, der Process wird zwar gestartet, aber er tut nicht die Datei ausführen, die ich mit FILE_FULL_ADRESS übergebe.


jaenicke - Mi 11.11.09 01:41

Kann es sein, dass der Pfad Leerzeichen beinhaltet? In dem Fall hast du evtl. die Anführungszeichen vergessen, es sei denn diese sind in FILE_FULL_ADRESS enthalten.

Zudem: EXE_FULL_ADRESS und FILE_FULL_ADRESS sind ja Konstanten, oder? Denn die Bezeichnungsweise (Großbuchstaben und so) ist ja die von Konstanten. Dann fehlt aber vermutlich der Pfad, da der ja nicht konstant sein kann.


delphijanka - Mi 11.11.09 16:16

@jaenicke:

Ne, es sind keine Konstanten, habe sie nur Übersichtlichkeit wegen groß geschrieben. Der Pfad wir zur Laufzeit ermittelt.

Innerhalb der momentanen Adressen habe ich keine Leerzeichen, daher sind die Anführungszeichen für meinen Fehlerfall erstmal unwichtig. Da die Maschine auch für beliebige Adressen funktionieren soll, werde ich die Anführungszeichen auf jeden Fall setzen. Die Frage ist nur, wie. Wenn ich die komplette Zeichenkette mit " umklammere, wird der Prozess gar nicht gestartet. kannst du mir sagen warum?

Ohne Anführungszeichen wird der Prozess gestartet. Ob er aber richtig fuktioniert, kann ich nicht sagen, da die nötige erwartete Datei zwar erstellt wird, aber ist leer. Vlcht liegt es daran, dass der Prozess nicht automatisch geschlossen wird.

Bin für jede weitere Hilfe sehr dankbar.