function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;   
var  
  zAppName: array[0..512] of char; //存放应用程序名   
  StartupInfo: TStartupInfo;   
  ProcessInfo: TProcessInformation;   
  exitCode: Dword;   
  aVisibility: integer;   
begin  
  StrPCopy(zAppName, FileName);   
  FillChar(StartupInfo, Sizeof(StartupInfo), #0);   
  //给StartupInfo结构体赋值   
  StartupInfo.cb := Sizeof(StartupInfo);   
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW;   
  if Visibility then  
    aVisibility := 1  
  else  
    aVisibility := 0;   
  
  StartupInfo.wShowWindow := aVisibility;   
  //调用CreateProcess 创建进程,执行指定的可执行文件   
  if not CreateProcess(nil, zAppName, nil, nil, false  
    , CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS   
    , nil, nil, StartupInfo, ProcessInfo) then  
    Result := -1  
  else  
  begin  
    //等待可执行文件退出   
    WaitforSingleObject(ProcessInfo.hProcess, INFINITE);   
    //得到进程终止状态码   
    GetExitCodeProcess(ProcessInfo.hProcess, exitCode);   
    result := Exitcode;   
  end;   
end;  

 

相关文章:

  • 2021-07-05
  • 2022-12-23
  • 2022-12-23
  • 2022-01-30
  • 2021-09-13
  • 2021-10-28
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-22
  • 2021-12-22
  • 2021-09-09
相关资源
相似解决方案