Check whether one specific process is running on windows with C++

前端 未结 3 2012
终归单人心
终归单人心 2020-12-11 21:02

Is there any function in psapi or windows.h to get desired process\' is running via only the process name (e.g : \"chrome.exe\") without getting all processes.

Edit

3条回答
  •  清歌不尽
    2020-12-11 21:49

    the above answer works on win 8. here it is without the wstring stuff and stripping off the path

    #include 
    DWORD FindProcessId(char* processName)
    {
        // strip path
    
        char* p = strrchr(processName, '\\');
        if(p)
            processName = p+1;
    
        PROCESSENTRY32 processInfo;
        processInfo.dwSize = sizeof(processInfo);
    
        HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
        if ( processesSnapshot == INVALID_HANDLE_VALUE )
            return 0;
    
        Process32First(processesSnapshot, &processInfo);
        if ( !strcmp(processName, processInfo.szExeFile) )
        {
            CloseHandle(processesSnapshot);
            return processInfo.th32ProcessID;
        }
    
        while ( Process32Next(processesSnapshot, &processInfo) )
        {
            if ( !strcmp(processName, processInfo.szExeFile) )
            {
              CloseHandle(processesSnapshot);
              return processInfo.th32ProcessID;
            }
        }
    
        CloseHandle(processesSnapshot);
        return 0;
    }
    

提交回复
热议问题