通过进程名获取进程PID

来源:互联网 发布:科罗拉多矿业学院 知乎 编辑:程序博客网 时间:2024/05/01 09:29


#include   "tlhelp32.h"

 


BOOL CGetprocessDlg::GetProcessByName(LPSTR pn, LPDWORD pid)
{

 STARTUPINFO st;
 PROCESS_INFORMATION pi;
 PROCESSENTRY32 ps;
HANDLE hSnapShot;
//ZeroMemory(&st,sizeof(STARTUPINFO);
memset(&st,0,sizeof(STARTUPINFO));
memset(&pi,0,sizeof(PROCESS_INFORMATION));

st.cb=sizeof(STARTUPINFO);
memset(&ps,0,sizeof(PROCESSENTRY32));
ps.dwSize=sizeof(PROCESSENTRY32);

hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
if(INVALID_HANDLE_VALUE==hSnapShot)
{
 return FALSE;
}
if(!Process32First(hSnapShot,&ps))
{
 return FALSE;
}
do
{
 if(lstrcmpi(ps.szExeFile,"GpsKj.exe")==0)
 {
  MessageBox("找到了!");
 // *lpPID=ps.th32ProcessID ;
  CloseHandle(hSnapShot);
  return TRUE;
 }
 }while(Process32Next(hSnapShot,&ps));


CloseHandle(hSnapShot);
 return FALSE;

}