1. 程式人生 > >【MFC】-005 根據程序名獲取程序ID

【MFC】-005 根據程序名獲取程序ID

【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工作管理員中顯示的名稱可能不一致!