//CreateProcess的使用示例 Function LaunchApp(pExePath,WorkDir:String;WaitFlag:Boolean):Boolean; var ExePath : array[0..512] of char; StartupInfo:TStartupInfo; ProcessInfo:TProcessInformation; begin StrPCopy(exePath, pExePath); FillChar(StartupInfo,Sizeof(StartupInfo),#0); StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := 1; if not CreateProcess(nil, ExePath, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then begin Result:=False; Exit; end else begin if WaitFlag then WaitforSingleObject(ProcessInfo.hProcess,INFINITE); Result:=True; end; end;
if not FileExists(AppFile) then Exit; FillChar(StartupInfo, SizeofStartupInfo),#0); if not CreateProcess(PChar(AppFile), nil, nil, nil, True,NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo) then ShowMessage('Create Process Error!') else WaitforSingleObject(ProcessInfo.hProcess, INFINITE);////AppFile是你指定的可执行文件
试过了,可以打开microsoft的一些应用程序以及象金山毒霸之类的,但是始终打不开foxmail的应用程序
ShellExecute(handle,'Open',pChar(FileName),nil,nil,SW_SHOWNORNAL);
winexec('11.exe,foxmail.exe',1)打开
Function LaunchApp(pExePath,WorkDir:String;WaitFlag:Boolean):Boolean;
var ExePath : array[0..512] of char;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(exePath, pExePath);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := 1;
if not CreateProcess(nil,
ExePath,
nil,
nil,
false,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
nil,
StartupInfo,
ProcessInfo) then begin
Result:=False;
Exit;
end else begin
if WaitFlag then
WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
Result:=True;
end;
end;
FillChar(StartupInfo, SizeofStartupInfo),#0);
if not CreateProcess(PChar(AppFile), nil, nil, nil, True,NORMAL_PRIORITY_CLASS,
nil, nil, StartUpInfo, ProcessInfo) then
ShowMessage('Create Process Error!')
else
WaitforSingleObject(ProcessInfo.hProcess, INFINITE);////AppFile是你指定的可执行文件