procedure TForm1.ShellExec(AFileName: String);
var
sCommandLine: String;
bCreateProcess: boolean;
lpStartupInfo: TStartupInfo;
lpProcessInformation: TProcessInformation;
begin
Hide;
sCommandLine := AFileName;
if not FileExists(AFileName) then Exit;
FillChar(lpStartupInfo, Sizeof(TStartupInfo), #0);
lpStartupInfo.cb := Sizeof(TStartupInfo);
lpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow := SW_NORMAL;
bCreateProcess := CreateProcess(nil, PChar(sCommandLine),nil, nil, True,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, lpStartupInfo,
lpProcessInformation);
if bCreateProcess then //等外部进程的结束
WaitForSingleObject(lpProcessInformation.hProcess, INFINITE);
Show;
end;