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. }  

 

源码:https://files.cnblogs.com/files/lizhigang/CreateProgress.rar

posted @ 2017-08-09 11:08  lizhigang  阅读(1523)  评论(0编辑  收藏  举报