获取进程pid、根据进程pid获取线程pid、获取线程进程句柄
2014-12-16 10:11
3063 查看
======================================= 获取进程pid ======================================= #include "tlhelp32.h" //获取PID UINT GetProPid(LPCTSTR pszExeFile) { //查找当前的进程的pid UINT nProcessID = 0; PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)}; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); if (hSnapshot != INVALID_HANDLE_VALUE) { if (Process32First(hSnapshot, &pe)) { while (Process32Next(hSnapshot, &pe)) { if (lstrcmpi(pszExeFile, pe.szExeFile) == 0) { nProcessID = pe.th32ProcessID; break; } } } CloseHandle(hSnapshot); } return nProcessID; } //调用 UINT dwProcessID=GetProPid(_T("explorer.exe")); ======================================= 根据进程pid获取线程pid ======================================= DWORD dwThreadID; THREADENTRY32 te32 = {sizeof(te32)}; HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0); if( Thread32First( hThreadSnap, &te32) ) { do{ if( dwProcessID == te32.th32OwnerProcessID ) { dwThreadID = te32.th32ThreadID; break; } }while( Thread32Next( hThreadSnap, &te32) ); } ======================================= 根据进程id获取进程名 ======================================= BOOL GetProcess(int nID) { CString strName; HANDLE hProcessSnap=NULL; PROCESSENTRY32 pe32={0}; hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcessSnap==(HANDLE)-1) { ::MessageBox(NULL,L"查询进程失败!:(",L"错误提示",MB_OK); return FALSE; } pe32.dwSize=sizeof(PROCESSENTRY32); if(Process32First(hProcessSnap,&pe32)) { do { if(nID==pe32.th32ProcessID) //判断制定进程号 { strName.Format(L"进程编号%d的进程名为:%s",nID,pe32.szExeFile); AfxMessageBox(strName); } } while(Process32Next(hProcessSnap,&pe32)); } else { ::MessageBox(NULL,L"出现意外错误!",L"错误提示",MB_OK); return FALSE; } CloseHandle(hProcessSnap); return TRUE; } ======================================= 获取句柄 ======================================= HANDLE hProcess=NULL; HANDLE hThread=NULL; hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwProcessID); //进程句柄 hThread = OpenThread(THREAD_ALL_ACCESS , FALSE, dwThreadID); //线程句柄
相关文章推荐
- VB6 根据进程ID(PID)获取窗体句柄
- delphi根据进程PID获取程序所在路径的函数(用OpenProcess取得句柄,用GetModuleFileNameEx取得程序名)
- VB6 根据进程ID(PID)获取窗体句柄
- VB6 根据进程ID(PID)获取窗体句柄
- 根据句柄如何获取该进程的所有线程(转)
- linux根据pid获取进程名和获取进程pid(c语言获取pid)
- 进程PID、线程ID、实例Instance、句柄Handle的关系及App.hInstance 的用途
- VC获取进程ID 线程ID 窗口句柄
- 根据进程结合GetModuleHandle获取当前主模块句柄
- C++根据进程获取主窗口的句柄
- 根据当前进程号,获取进程下线程数目
- linux下根据进程名字获取PID,类似pidof(转)
- linux 下根据进程名字获取进程的进程号PID,类似pidof,C函数
- C++根据进程获取主窗口的句柄
- Process 后, 如何获取打开窗口的句柄(根据进程句柄获取窗口句柄)
- 根据包名获取进程pid
- VC 根据线程句柄获得线程ID 根据线程句柄获得进程ID
- 转:VC:如何根据文件名来获取程序进程和窗口句柄的代码(转载)
- delphi根据进程PID获取程序所在路径的函数
- 获取当前进程/线程的ID、句柄和内核地址