我有以下函数来创建进程并等待其执行:
procedure TdmTransfer.ExecNewProcess(ProgramName, aParams: string);
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CreateOK: Boolean;
begin
FillChar(StartInfo, SizeOf(TStartupInfo), #0);
FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
StartInfo.cb := SizeOf(TStartupInfo);
CreateOK := CreateProcess(nil,
PChar(ProgramName + ' ' + aParams),
nil,
nil,
False,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,
nil,
nil,
StartInfo,
ProcInfo);
if CreateOK then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
end;
我正在执行psftp.exe -b "download.cmd" -pw "password" user@domain.com
,如果我从桌面应用程序调用它,它运行正常。
当我从服务应用程序中运行代码时,进程被创建,但是psftp.exe
没有完成,我的服务无限期地等待。
文件“download.cmd”如下所示:
lcd download
cd directory
mget ./*.XML
quit
如何让它在我的服务应用程序中运行?