来自amo (1999-10-25 10:35:00) <br>给你一个使用Createprocess的函数,它可以运行外部程序或者命令,并 <br>等待运行结束: <br> <br>function WinExecAndWait32(FileName:String; Visibility : integer):integer; <br>var <br> zAppName:array[0..512] of char; <br> zCurDir:array[0..255] of char; <br> WorkDir:String; <br> StartupInfo:TStartupInfo; <br> ProcessInfo:TProcessInformation; <br>begin <br> StrPCopy(zAppName,FileName); <br> GetDir(0,WorkDir); <br> StrPCopy(zCurDir,WorkDir); <br> FillChar(StartupInfo,Sizeof(StartupInfo),#0); <br> StartupInfo.cb := Sizeof(StartupInfo); <br> StartupInfo.dwFlags := STARTF_USESHOWWINDOW; <br> StartupInfo.wShowWindow := Visibility; <br> if not CreateProcess(nil, <br> zAppName, { pointer to command line string } <br> nil, { pointer to process security attributes } <br> nil, { pointer to thread security attributes } <br> false, { handle inheritance flag } <br> CREATE_NEW_CONSOLE or { creation flags } <br> NORMAL_PRIORITY_CLASS, <br> nil, { pointer to new environment block } <br> nil, { pointer to current directory name } <br> StartupInfo, { pointer to STARTUPINFO } <br> ProcessInfo) then Result := -1 { pointer to PROCESS_INF } <br> else begin <br> WaitforSingleObject(ProcessInfo.hProcess,INFINITE); <br> GetExitCodeProcess(ProcessInfo.hProcess,Result); <br> end; <br>end; <br><br> <br>