VS2012
创建进程
- WinExec
- ShellExecute、ShellExecuteEx
- CreateProcess
void CDemoDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //创建一个新的进程,打开计算器 WinExec("calc.exe", SW_SHOW); }
void CDemoDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 //创建一个新的进程,打开记事本 ShellExecute(NULL, TEXT("open"), TEXT("test.txt"), NULL, NULL, SW_SHOW); }
void CDemoDlg::OnBnClickedButton3() { // TODO: 在此添加控件通知处理程序代码 //创建一个新的进程,打开记事本 SHELLEXECUTEINFO Info; memset(&Info, 0, sizeof(Info)); Info.cbSize = sizeof(Info); Info.lpVerb = TEXT("open"); Info.lpFile = TEXT("test.txt"); Info.lpParameters = NULL; Info.fMask = SEE_MASK_NOCLOSEPROCESS; Info.nShow = SW_SHOWDEFAULT; ShellExecuteEx(&Info); }
void CDemoDlg::OnBnClickedButton4() { // TODO: 在此添加控件通知处理程序代码 //创建一个新的进程,打开一个计算器 PROCESS_INFORMATION pi;//进程信息结构 STARTUPINFO si;//启动信息结构 memset(&si, 0, sizeof(si)); si.cb = sizeof(si); si.wShowWindow = SW_SHOW; si.dwFlags = STARTF_USESHOWWINDOW; ::CreateProcess(TEXT("C://windows//system32//calc.exe"), NULL,NULL,FALSE,NULL,NULL,NULL,NULL,&si,&pi); }
Caesar卢尚宇
2021年1月4日
2021年6月9日 补充
传参,调用exe,等待调用结束,判断是否成功。 char cmd[1000]; SHELLEXECUTEINFO ShExecInfo = { 0 }; sprintf(cmd, "%s\\SearchCloudPdfToPng.exe", DLL_Path.GetBuffer()); ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = "open";//多种类别有 "explorer" "print" 等 ShExecInfo.lpFile = cmd;//exe 路径 ShExecInfo.lpParameters = pdf_path;//参数 ShExecInfo.lpDirectory = NULL; ShExecInfo.nShow = SW_HIDE;// ShExecInfo.hInstApp = NULL; ShellExecuteEx(&ShExecInfo); DWORD res = WaitForSingleObject(ShExecInfo.hProcess, 30 * 1000);//等待完成 第二个参数是超时时间(毫秒)超时后返回超时代码 if (res == WAIT_OBJECT_0)//表示你等待的对象(比如线程、互斥体)已的正常执行完成或完成释放 { //删除pdf DeleteFile(pdf_path); }