//获取特定进程的各种信息
void CMFC_FormDlg::GetPPid(DWORD PID) //传入的参数为 特定进程ID == PID
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32 = {0};
CString str;
// 建立一个 [当前进程,只是当前,如果该函数执行慢,那么新的进程就检测不到 ]的映射,即当前进程的信息
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == (HANDLE)-1)
return (FALSE);
// 设置结构数据大小 用于传入的结构,也可以设置
pe32.dwSize = sizeof(PROCESSENTRY32);
//从第一个进程信息开始循环直到找出指定的PID
if (Process32First(hProcessSnap, &pe32))
{
while(true)
{
if(pe32.th32ProcessID!=PID)
{
Process32Next(hProcessSnap, &pe32); //查找下一个
}
else
{
str.Format(_T("执行文件名为:%s /tPID为:%lu"),pe32.szExeFile,PID); //可读取信息
AfxMessageBox(str);
break;
}
}
}
return(pe32.th32ParentProcessID);
}