1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| function CallCmd(const CmdDirectory, CmdName, CmdParam, OutFile: string): Boolean;
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
BatFile: file;
Buf: string;
begin
AssignFile(BatFile, Format('%sCall_%s.bat', [CmdDirectory, CmdName]));
try
Rewrite(BatFile, 1);
try
Buf := Format('"%s" %s > "%s"'#13#10, [CmdDirectory+CmdName, CmdParam, OutFile]);
BlockWrite(BatFile, Buf[1], Length(Buf));
Buf := Format('DEL "%s"', [TFileRec(BatFile).Name]);
BlockWrite(BatFile, Buf[1], Length(Buf));
finally
CloseFile(BatFile);
end;
GetStartupInfo(StartupInfo);
Result := CreateProcess(TFileRec(BatFile).Name, nil, nil, nil, True, 0, nil, PChar(CmdDirectory), StartupInfo, ProcessInfo);
if Result then
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
Result := FileExists(OutFile);
if Result then
AddLog(OutFile);
except
on E: Exception do
begin
Result := False;
OutputDebugString(PChar(Format('Error %s, Message : %s', [E.ClassName, E.Message])));
end;
end;
end; |
Partager