为什么我的第三方FTP程序从我的服务启动时挂起?

时间:2014-05-19 07:03:10

标签: delphi service delphi-xe2

我有以下函数来创建进程并等待其执行:

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

如何让它在我的服务应用程序中运行?

0 个答案:

没有答案