1 // 04 创建一个进程.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include <windows.h>
6 #include<stdio.h>
7 BOOL CreateChildProcess(LPWSTR lpPath, BOOL bWait);
8 int _tmain(int argc, _TCHAR* argv[])
9 {
10 PROCESS_INFORMATION pi = {};
11 STARTUPINFO si = {};
12 CreateProcess(
13 TEXT("E:\软件安装\Bin\QQ.exe"), //exe文件路径
14 NULL, //lpCommandLine传递给新进程的命令行字符串,此参数类型为PTSTR,意味着在执行过程中可能修改传入的值
15 NULL, //lpProcessAttributes进程安全属性
16 NULL, //线程安全属性
17 FALSE, //表示新创建的子进程是否继承父进程的所有句柄,是的话子进程就可以访问父进程创建的所有句柄
18 NULL, //子进程的创建方式
19 NULL, //指向保存有进程环境的当前目录
20 NULL, //新创建子进程的当前目录
21 &si, //不能省略,指向子进程创建配置结构体,此结构体可以详细控制子进程的各种创建状态
22 &pi); //不能省略,返回进程创建的详细信息
23 return 0;
24 }
25 BOOL CreateChildProcess(LPWSTR lpPath, BOOL bWait){
26 STARTUPINFO si = { 0 };//新进程窗口特性
27 PROCESS_INFORMATION pi = { 0 };//新进程信息结构体
28 si.cb = sizeof(si);
29 //1.创建子进程,并判断是否成功
30 if (!CreateProcess(lpPath, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi));
31 return FALSE;
32 //是否需要等待进程执行结束
33 if (bWait)
34 WaitForSingleObject(pi.hProcess, INFINITE);
35 //关闭进程句柄和线程句柄
36 CloseHandle(pi.hProcess);
37 CloseHandle(pi.hThread);
38 return true;
39
40 }