在这里我们首先需要用到一个可以列出所有进程的一个函数CreateToolelp32Snapshot函数,函数包含在<Tlhelp.h>头中,在帮助文档中,函数的具体格式如下
HANDLE WINAPI CreateToolhelp32Snapshot(
_In_ DWORD dwFlags,
_In_ DWORD th32ProcessID
);
其中参数的意义如下:
dwFlags:指定系统获取进程快照的类型
th32ProcessID:指定要获取进程快照的ID,获取系统内所有进程快照ID时是0
在这里我们要获取进程快照的ID,第一个参数传入TH32CS_SNAPPROCESS
如果函数调用成功返回快照句柄,否则返回INVALID_HANDLE_VALUE,在得到系统进程快照句柄之后,需要调用Process32First函数查找系统进程快照中的第一个进程。函数格式如下:
BOOL Process32First(
HANDLE hSnapshot,
LPROCESSENTRY32 lppe
);