C++创建一个新的进程

Posted 智者无疆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++创建一个新的进程相关的知识,希望对你有一定的参考价值。

原文:http://blog.csdn.net/hk627989388/article/details/53309865

 

STARTUPINFO用于指定新进程的主窗口特性的一个结构。

PROCESS_INFORMATION在创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息。

 

[cpp] view plain copy
 
  1. void CCreateProgressDlg::StartProgress()  
  2. {  
  3.     CString csCommandLine;  
  4.     char chWindowsDir[MAX_PATH];  
  5.     char chCommandLine[MAX_PATH];  
  6.     DWORD dwExitCode;  
  7.     PROCESS_INFORMATION pi;  
  8.   
  9.     STARTUPINFO     si;//用于指定新进程的主窗口特性的一个结构  
  10.     memset(&si, 0, sizeof(si));  
  11.     si.cb = sizeof(STARTUPINFO);  
  12.     si.dwFlags = STARTF_USESHOWWINDOW;  
  13.     si.wShowWindow = SW_SHOW;//SW_HIDE隐藏窗口  
  14.   
  15.     //得到windows目录  
  16.     GetWindowsDirectory(chWindowsDir, MAX_PATH);  
  17.   
  18.     //启动“记事本”程序的命令行  
  19.     csCommandLine = CString(chWindowsDir) + "\\NotePad.exe";  
  20.     ::strcpy(chCommandLine, csCommandLine);  
  21.   
  22.     //启动“记事本”作为子进程  
  23.     BOOL ret = CreateProcess(NULL, chCommandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);  
  24.     if (ret)  
  25.     {  
  26.         //关闭子进程的主线程句柄  
  27.         CloseHandle(pi.hThread);  
  28.   
  29.         //等待子进程的退出  
  30.         WaitForSingleObject(pi.hProcess, INFINITE);  
  31.   
  32.         //获取子进程的退出码  
  33.         GetExitCodeProcess(pi.hProcess, &dwExitCode);  
  34.   
  35.         //关闭子进程句柄  
  36.         CloseHandle(pi.hProcess);  
  37.   
  38.     }  
  39.   
  40.   
  41. }  

 

以上是关于C++创建一个新的进程的主要内容,如果未能解决你的问题,请参考以下文章

Windows下用c++创建进程,再创建两个线程

如果已经运行,则 C++ 程序将进程置于前台,否则创建一个新进程

创建一个新的进程os.fork

C++ fork 进程但不是子进程

C++多线程问题

通过在 Visual C++ 中传递函数来创建进程