【MFC】-005 根據程序名獲取程序ID
阿新 • • 發佈:2018-11-05
【MFC】-005 根據程序名獲取程序ID
1、由來
在使用TrackIR5進行位姿跟蹤時,使用網上的方法進行姿態資料獲取時,需要確保TrackIR5本身的軟體一直處於執行狀態。否則會獲取不到資料。因此,在程式執行前需要判斷TrackIR5軟體是否已經處於執行狀態。
2、實現
每一個程序在執行過程中,在系統中都會有一個獨一無二的程序ID,該ID在各次執行時並不相同,除非經過特殊處理,程序名稱每次都是一樣的。因此,可以考慮從程序名稱去獲取程序的ID。進而進行後續處理。
DWORD GetProcessIDByName(const wchar_t* pName)
{
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hSnapshot) {
return NULL;
}
PROCESSENTRY32 pe = { sizeof(pe) };
for (BOOL ret = Process32First(hSnapshot, &pe); ret; ret = Process32Next(hSnapshot, &pe))
{
if (wcscmp(pe.szExeFile, pName) == 0)
{
CloseHandle(hSnapshot);
return pe.th32ProcessID;
}
}
CloseHandle(hSnapshot);
return 0;
}
3、注意
該方法是根據程序的exe檔名進行查詢的,而程序檔名與其在windows工作管理員中顯示的名稱可能不一致!