windows获取可执行程序进程句柄
时间: 2023-08-12 09:14:38 浏览: 142
在 Windows 下使用 C++ 获取可执行程序的进程句柄,可以使用 Windows API 函数 CreateProcess。
首先,需要包含 Windows.h 头文件,然后可以使用以下代码创建进程并获取进程句柄:
```c++
#include <Windows.h>
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
BOOL bResult = CreateProcess(
NULL, // 可执行程序的路径
NULL, // 命令行参数
NULL, // 进程句柄不可被继承
NULL, // 进程句柄不可被继承
FALSE, // 进程不继承父进程的句柄
CREATE_NEW_CONSOLE, // 新建控制台窗口
NULL, // 环境变量指针
NULL, // 工作目录指针
&si, // STARTUPINFO 结构体指针
&pi // PROCESS_INFORMATION 结构体指针
);
if (bResult) {
HANDLE processHandle = pi.hProcess; // 获取进程句柄
// ...
}
CloseHandle(pi.hProcess); // 关闭进程句柄
CloseHandle(pi.hThread); // 关闭线程句柄
```
其中,第一个参数是可执行程序的路径,可以是绝对路径或者相对路径;第二个参数是命令行参数,可以为 NULL;第三个参数和第四个参数分别指定进程句柄和线程句柄是否可被继承,可以为 NULL;第五个参数指定进程是否继承父进程的句柄,一般设置为 FALSE;第六个参数指定新进程的标志,例如是否新建控制台窗口等;第七个参数是环境变量指针,一般为 NULL;第八个参数是工作目录指针,可以为 NULL;第九个参数是 STARTUPINFO 结构体指针,用于指定新进程的标准输入、标准输出和标准错误输出等信息;第十个参数是 PROCESS_INFORMATION 结构体指针,用于接收新进程的进程句柄和主线程句柄等信息。
获取到进程句柄后,就可以使用 Windows API 函数操作进程,例如读取或写入进程内存等。需要注意的是,使用完进程句柄后需要关闭句柄,以避免资源泄漏。