?
?!?!
Unregistered / Unconfirmed
GUEST, unregistred user!
[?]//功能:热行程序参数所带的软件
//例如"test c:/windows/notepad.exe"则执行"c:/windows/notepad.exe"
//发现问题1:如果将主程序中X2行换为加了注释的X1行,则无法创建进程
//发现问题2:如果使用X2行,则无法正确识别文件名中带空格的程序,
// 例如"c:/program files/realplay one.exe"
//奖分原则:奖分给最先完美解决问题者(最好能给出详细的解释)
//希望能得到大家的帮助。
//变量说明
var
I:Integer;
pa:string;
//过程定义
procedure procRun(exeName,exePathChar;trace:boolean);
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow :=1;
end;
if CreateProcess(NIL,exeName, NIL, NIL, FALSE,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL,exePath, SUInfo, ProcInfo) then
begin
if trace then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
//主程序
begin
for i:=1 to ParamCount do
pa:=pa+' '+ParamStr(i);
if Pa <>'' then
//procRun(PChar(pa),PChar(ExtractFilePath(pa)),false); {X1}
procRun(PChar(pa),PChar(ExtractFilePath(paramStr(1))),false); //x2
end.
//例如"test c:/windows/notepad.exe"则执行"c:/windows/notepad.exe"
//发现问题1:如果将主程序中X2行换为加了注释的X1行,则无法创建进程
//发现问题2:如果使用X2行,则无法正确识别文件名中带空格的程序,
// 例如"c:/program files/realplay one.exe"
//奖分原则:奖分给最先完美解决问题者(最好能给出详细的解释)
//希望能得到大家的帮助。
//变量说明
var
I:Integer;
pa:string;
//过程定义
procedure procRun(exeName,exePathChar;trace:boolean);
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow :=1;
end;
if CreateProcess(NIL,exeName, NIL, NIL, FALSE,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL,exePath, SUInfo, ProcInfo) then
begin
if trace then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;
end;
//主程序
begin
for i:=1 to ParamCount do
pa:=pa+' '+ParamStr(i);
if Pa <>'' then
//procRun(PChar(pa),PChar(ExtractFilePath(pa)),false); {X1}
procRun(PChar(pa),PChar(ExtractFilePath(paramStr(1))),false); //x2
end.