怎么使用CreateProcess函数
时间: 2024-02-12 13:32:25 浏览: 112
CreateProcess函数可以用来创建一个新的进程。以下是使用CreateProcess函数的步骤:
1. 包含Windows.h头文件。
2. 定义一个PROCESS_INFORMATION结构体和一个STARTUPINFO结构体。
PROCESS_INFORMATION结构体用来存储新进程的信息,如进程句柄和进程ID。
STARTUPINFO结构体用来指定新进程的属性,如窗口大小和标准输入输出的句柄。
3. 调用CreateProcess函数。
CreateProcess函数的第一个参数是应用程序的路径,第二个参数是命令行参数,第三个参数是安全属性,第四个参数是线程安全属性,第五个参数是指定是否创建一个新的控制台窗口,第六个参数是指定创建新进程的标志,第七个参数是指定环境变量,第八个参数是指定当前目录,第九个参数是STARTUPINFO结构体,第十个参数是PROCESS_INFORMATION结构体。
4. 关闭句柄。
关闭新进程的句柄和主线程的句柄。
以下是一个简单的使用CreateProcess函数的例子:
```c++
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
// Start the child process.
if (!CreateProcess(NULL, // No module name (use command line)
(LPSTR)"notepad.exe", // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi) // Pointer to PROCESS_INFORMATION structure
)
{
cout << "CreateProcess failed" << endl;
return 1;
}
// Wait until child process exits.
WaitForSingleObject(pi.hProcess, INFINITE);
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
```
这个例子会启动一个记事本程序。
阅读全文