您的位置:首页 > 其它

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

2016-04-14 14:10 441 查看

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 processes
hSnapshot = 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 );
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: