函数-从进程名获得进程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 ); }
相关文章推荐
- 文件的自定义包发送接收
- 多进程
- dll和ocx的区别
- 卷积神经网络源码——最终输出部分的理解
- Cracking the code interview总结
- Android中okhttp的基本用法2(okHttp的简单封装)
- Git 换行符自动转换
- 《Linux内核分析》第八周学习总结
- Selenium关于下拉列表的定位方法总结
- PIL库 64位
- UVA - 524 Prime Ring Problem
- Objective - C CALayer的简介
- ThinkPHP 3.1.2 视图-1
- QImage、QPixmap、QBitmap、QPicture 四个类
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
- MySQL的联合索引和覆盖索引
- 160412、DWR使用笔记
- ThinkPHP 3.1.2 视图-1
- ThinkPHP 3.1.2 视图-1
- 基于go语言的心跳响应