新人一枚,求大神讲解。

解决方案 »

  1.   


     var ProcessInfo : PROCESS_INFORMATION ; 
         StartupInfo : STARTUPINFO ; 
     fillchar(StartupInfo, sizeof(StartupInfo),0);
     StartupInfo.cb := sizeof(StartupInfo) ; 
     if(CreateProcess("c:\winnt\notepad.exe", nil, 
     nil,nil,FALSE,0,nil,
     nil,@StartupInfo,@ProcessInfo)) then
     begin 
       WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
       CloseHandle(ProcessInfo.hThread);
       CloseHandle(ProcessInfo.hProcess);
     end
     else
       MessageBox("The process could not be started...");
      

  2.   

    function RunWait(FileName: string; Visibility: Integer): THandle;
    var
        zAppName: array[0..512] of Char;
        zCurDir: array[0..255] of Char;
        WorkDir: string;
        StartupInfo: TStartupInfo;
        ProcessInfo: TProcessInformation;
    begin
        try
          StrPCopy(zAppName, FileName);
          GetDir(0, WorkDir);
          StrPCopy(zCurDir, WorkDir);
          FillChar(StartupInfo, SizeOf(StartupInfo), #0);
          StartupInfo.cb := SizeOf(StartupInfo);
          StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
          StartupInfo.wShowWindow := Visibility;
          if not CreateProcess(nil, zAppName, nil, nil, false, Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
          begin
            result := 0;
            Exit;
          end
          else
          begin
            WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
            GetExitCodeProcess(ProcessInfo.hProcess, result);
          end;
        finally
        end;
    end;