Gerd-Ulrich Meyer
vor 12 Jahren
Hallo,
irgendwie komme ich mit den Parametern von CreateProcess nicht klar (da
sind mir zuviele NIL's an den unerwartetsten Stellen :-) ).
Ich habe diese Routine inzwischen mühsam zusammengesetzt (und auch
zusammengesucht):
procedure ExecuteCommandLine(CmdLineZeileStr : string);
var pStartUpInfo : TStartupInfo;
pProcessInfo : TProcessInformation;
CmdZeileStr : string;
isExec : boolean;
begin
FillChar(pStartUpInfo,SizeOf(pStartUpInfo),#0);
with pStartUpInfo do
begin
cb:=SizeOf(pStartUpInfo);
dwFlags:=STARTF_USESHOWWINDOW;
wShowWindow:=SW_SHOWNORMAL;
end; // with pStartUpInfo do
isExec:=CreateProcess(PChar(copy(CmdLineZeileStr,1,
pos(' ',CmdLineZeileStr)-1)),PChar(copy(CmdLineZeileStr,
pos(' ',CmdLineZeileStr)+1,length(CmdLineZeileStr))),
nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,nil,pStartUpInfo,pProcessInfo);
end; // procedure ExecuteCommandLine
und rufe sie so auf:
...
CommandLineZeileStr:='cmd.exe /C pushd '+dbGetAktUserBaseDir+'
'+ProgrammDateiNameStr+' > '+AusgabeDateiNameStr+' & popd & exit';
ExecuteCommandLine(CommandLineZeileStr);
wobei dbGetAktUserBaseDir mir ein Verzeichnis (in diesem Fall Q:)
zurückliefert.
ProgrammDateiNameStr enthält zur Zeit zum Testen den Wert "md
Testverzeichnis" (später sollen so komplette DOS-Befehle möglich sein).
Wo gehören jetzt welche Teile hin? Ich probiere jetzt seit ca. 3 Tagen.
Vielen Dank und
Gruss
Gerd-Ulrich Meyer
irgendwie komme ich mit den Parametern von CreateProcess nicht klar (da
sind mir zuviele NIL's an den unerwartetsten Stellen :-) ).
Ich habe diese Routine inzwischen mühsam zusammengesetzt (und auch
zusammengesucht):
procedure ExecuteCommandLine(CmdLineZeileStr : string);
var pStartUpInfo : TStartupInfo;
pProcessInfo : TProcessInformation;
CmdZeileStr : string;
isExec : boolean;
begin
FillChar(pStartUpInfo,SizeOf(pStartUpInfo),#0);
with pStartUpInfo do
begin
cb:=SizeOf(pStartUpInfo);
dwFlags:=STARTF_USESHOWWINDOW;
wShowWindow:=SW_SHOWNORMAL;
end; // with pStartUpInfo do
isExec:=CreateProcess(PChar(copy(CmdLineZeileStr,1,
pos(' ',CmdLineZeileStr)-1)),PChar(copy(CmdLineZeileStr,
pos(' ',CmdLineZeileStr)+1,length(CmdLineZeileStr))),
nil,nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,nil,pStartUpInfo,pProcessInfo);
end; // procedure ExecuteCommandLine
und rufe sie so auf:
...
CommandLineZeileStr:='cmd.exe /C pushd '+dbGetAktUserBaseDir+'
'+ProgrammDateiNameStr+' > '+AusgabeDateiNameStr+' & popd & exit';
ExecuteCommandLine(CommandLineZeileStr);
wobei dbGetAktUserBaseDir mir ein Verzeichnis (in diesem Fall Q:)
zurückliefert.
ProgrammDateiNameStr enthält zur Zeit zum Testen den Wert "md
Testverzeichnis" (später sollen so komplette DOS-Befehle möglich sein).
Wo gehören jetzt welche Teile hin? Ich probiere jetzt seit ca. 3 Tagen.
Vielen Dank und
Gruss
Gerd-Ulrich Meyer