看看这个函数.Function WinExecExW(cmd,workdir:pchar;visiable:integer):DWORD;
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
FillChar(StartupInfo,SizeOf(StartupInfo),#0);
StartupInfo.cb:=SizeOf(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=visiable;
if not CreateProcess(nil,cmd,nil,nil,false,Create_new_console or Normal_priority_class,nil,nil,StartupInfo,ProcessInfo) then
result:=0
else
begin
waitforsingleobject(processinfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;

解决方案 »

  1.   

    看一看怎样同步运行外部程序呀
    回复人: TechnoFantasy(www.applevb.com) (  ) 信誉:110 
    一个执行外部程序的子程序代码:procedure RunCommand(const Cmd, Params: String);
    var
      SI: TStartupInfo;
      PI: TProcessInformation;
      CmdLine: String;
    begin
      //Fill record with zero byte values
      FillChar(SI, SizeOf(SI), 0);
      //Set mandatory record field
      SI.cb := SizeOf(SI);
      //Ensure Windows mouse cursor reflects launch progress
      SI.dwFlags := StartF_ForceOnFeedback;
      //Set up command line
      CmdLine := Cmd;
      if Length(Params) > 0 then
        CmdLine := CmdLine + #32 + Params;
      //Try and launch child process. Raise exception on failure
      Win32Check(CreateProcess(
        nil, PChar(CmdLine), nil, nil, False, 0, nil, nil, SI, PI));
      //Wait until process has started its main message loop
      WaitForInputIdle(PI.hProcess, Infinite);
      //Close process and thread handles
      CloseHandle(PI.hThread);
      CloseHandle(PI.hProcess);
    end;
      

  2.   

    winExec是没办法的,只有用CreateProcess可以