函数-从进程名获得进程ID、从进程ID获得进程路径

来源:互联网 发布:金马网络服装批发城 编辑:程序博客网 时间:2024/06/05 02:50

1.从进程名获得进程ID

BOOL CGlobal::GetProcessIdByName(LPSTR szProcessname, LPDWORD lpPID){PROCESSENTRY32 ps;HANDLE hSnapshot;//Fills a block of memory with zeros.ZeroMemory(&ps, sizeof(PROCESSENTRY32));ps.dwSize = sizeof(PROCESSENTRY32);//Takes a snapshot of the specified processeshSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hSnapshot == INVALID_HANDLE_VALUE){return FALSE;}if (!Process32First(hSnapshot, &ps)){return FALSE;}do {if (lstrcmpi(ps.szExeFile, szProcessname) == 0){*lpPID = ps.th32ProcessID;CloseHandle(hSnapshot);return TRUE;}} while (Process32Next(hSnapshot, &ps));CloseHandle(hSnapshot);return FALSE;}

2.从进程ID获得进程路径

CString GetProcessPath( DWORD idProcess ){// 获取进程路径CString sPath;// 打开进程句柄HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, idProcess );if( NULL != hProcess ){HMODULE hMod;DWORD cbNeeded;// 获取路径if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) ){DWORD dw = GetModuleFileNameEx( hProcess, hMod, sPath.GetBuffer( MAX_PATH ), MAX_PATH );sPath.ReleaseBuffer();}CloseHandle( hProcess );}return( sPath );}


0 0
原创粉丝点击