hcnak.blog

posted at 2015-06-21 15:44:29 +0000

Visual C++调用cmd命令,并等待cmd命令执行完后继续运行

在利用C++执行cmd命令的时候,有些时候会因为命令类型不同,所需要的时间也不同(如用dir命令枚举C盘下的所有文件就非常耗时)。

因此,我们通常希望让程序在执行完cmd命令后再继续运行。下面有一个小技巧可以帮助我们完成。

基本思路:

  1. 首先建立要执行的cmd命令
  2. 然后新建线程去执行该cmd命令
  3. 等待cmd执行结束(线程挂起)

下面是源代码:

CString cmd; 
STARTUPINFO si={sizeof(si)}; 
PROCESS_INFORMATION pi; //要执行的完整CMD命令,一般是一个字符串 
cmd = "dir"; //枚举文件

//创建线程,执行cmd命令,并等待其结束 
BOOL fRet1=CreateProcess(NULL,cmd.GetBuffer(),NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi); 

if(fRect== TRUE) { 
  WaitForSingleObject(pi.hThread,INFINITE); 
  CloseHandle(pi.hThread); 
  CloseHandle(pi.hProcess); 
}


© kanchzl AT kanchz DOT com

last updated on 2022-07-27 01:57:54 +0000