当命令行包含路径时,CreateProcess()返回false。我不明白为什么。

在这里,我简化了操作:

function ExecProcess(path:string):boolean;
var StartupInfo:TstartupInfo;
    ProcInfo:TProcessInformation;
begin
  FillChar( StartupInfo, SizeOf( TStartupInfo ), 0 );
  StartupInfo.cb := SizeOf( TStartupInfo );
  Result:= CreateProcess(nil, PChar(path), Nil, Nil, False, 0, Nil,     PChar(ExtractFilePath(path)),StartupInfo,ProcInfo);
end;

begin
  ExecProcess(ParamStr(0) + ExtractFilePath(ParamStr(0)));
end.


结果为假。

如何在命令行中包含路径?

最佳答案

如果您提供了一些调试信息,例如ParamStr(0)和Path的值,我想您会找到自己的答案。
我认为错误在这里:
ParamStr(0)+ ExtractFilePath(ParamStr(0))

因此,如果您的应用程序是c:\ apps \ foo.exe
那么您将可以有效地致电:
ExecProcess('c:\ apps \ foo.exec:\ apps \');

我认为那不是您想要的。但是,您不会说自己在做什么,因此很难确定...。

09-17 20:31