当命令行包含路径时,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 \');
我认为那不是您想要的。但是,您不会说自己在做什么,因此很难确定...。