看一下这个:http://bbs.csdn.net/topics/50232175

解决方案 »

  1.   

      Result := CreateProcess(nil, PChar(Command), nil, nil, true,
        NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInformation);  if bWaitExecute then
        WaitForSingleObject(ProcessInformation.hProcess, INFINITE);
      

  2.   

    我用的下面语句,但是还是不行
    首先定义一个线程
    procedure winrarthread.Execute;
    begin
      { Place thread code here }
      shellexecute(handle,nil,'winrar','e -ibck -y d:\rartest\rar\jour_224_20121108.tar.gz acctmas.unl d:\rartest\rar\',nil,SW_SHOW);
    end;
    然后在主程序中调用下面的语句
       winrar1:=winrarthread.Create(false);
       WaitForSingleObject(winrar1.Handle,INFINITE);
    但是不能等待解压,就向下走了?
    请问在里出错了?
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
     StartInfo: TStartupInfo;
     ProcInfo: TProcessInformation;
    begin
        ZeroMemory(@StartInfo, SizeOf(TStartupInfo));
        StartInfo.cb:= SizeOf(TStartupInfo);
        CreateProcess(nil,'C:\Program Files\WinRAR\WinRAR.exe e -ibck -y d:\rartest\rar\jour_224_20121108.tar.gz acctmas.unl d:\rartest\rar\',nil,nil,true,NORMAL_PRIORITY_CLASS,nil,nil,StartInfo,ProcInfo);
        WaitForSingleObject(ProcInfo.hProcess,INFINITE);
        showmessage('解压成功');
        TerminateProcess(ProcInfo.hProcess,0);
    end;