调用外部进程并且等待结束后再继续执行程序
有时候我们需要通过一个程序调用的另一个外部程序,并且需要在被运行外部程序结束后我们才可以继续执行原来的程序,解决方案其实很简单,请看例子。
例子:
有一个外部程序:RunProcess.exe
调用代码:
#include <Windows.h>
#include <iostream.h>
#define RUN__APPLICATION_NAME "RunProcess.exe"
int main()
{
//参数
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
cout << "执行新的线程!"<< endl;
//创建一个进程,进程名称在RUN__APPLICATION_NAME中
CreateProcess(NULL,
RUN__APPLICATION_NAME,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi);
//等待进程结束,如果INFINITE 为无限等待时间,如果参数大于零为在有限时间等待
WaitForSingleObject( pi.hProcess, INFINITE );
cout << "新的线程结束!"<< endl;
//关闭句柄,结束进程
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return 0;
}