一般情况下我们一个软件产品打开后就一个进程,但有些产品可能会有多个进程.那怎么在一个进程中创建另外的进程呢.
创建进程
void CreateProcess(){
CString szExePath; //要创建进程对应的exe文件路径
szExePath = "D:\\Tmp\\TestApp.exe";
//假如要传一个参数过去的话可以用一个字符串传过去szExePath += " D:\\Tmp\\info.txt";
//传多个参数的话中间有空格隔开就行
STARTUPINFO startInfo;
PROCESS_INFORMATION proInfo;
memset(&startInfo,0,sizeof(startInfo));
memset(&proInfo,0,sizeof(proInfo));
startInfo.cb = sizeof(startInfo);
//创建进程
CreateProcess(NULL,szExePath.GetBuffer(),NULL,NULL,FALSE,0,NULL,NULL,&startInfo,&proInfo);
CloseHandle(proInfo.hProcess);
CloseHandle(proInfo.hThread);
}
接受参数
上面就简单的创建了一个新的进程了,假如TestApp.exe需要接受原来的进程的传来的参数.可以在APP文件中这样写
CMyApp theApp;
BOOL CMyApp::InitInstance(){
CString szPara = theApp.m_lpCmdLine; //得到的值为D:\\Tmp\\info.txt.
//或者这样简单的写CString szPara = __targv[1];
如果有多个参数的话可以这样
int i = 1;
CString szParaArr[100] = {""};
while( __targv[i] != NULL)
{
szParaArr[i] = __targv[i];
i ++;
}
}