| 109 | } |
| 110 | |
| 111 | ProcessMap GetProcessNames() |
| 112 | { |
| 113 | ProcessMap processMap; |
| 114 | |
| 115 | DWORD processIds[1024]; |
| 116 | DWORD processIdsSize; |
| 117 | EnumProcesses(processIds, sizeof(processIds), &processIdsSize); |
| 118 | |
| 119 | auto processIdsFound = processIdsSize / sizeof(DWORD); |
| 120 | for (unsigned idx = 0; idx < processIdsFound; idx++) |
| 121 | { |
| 122 | auto processId = processIds[idx]; |
| 123 | if (processId == 0) |
| 124 | { |
| 125 | continue; |
| 126 | } |
| 127 | |
| 128 | auto hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, processId); |
| 129 | if (!hProcess) |
| 130 | { |
| 131 | continue; |
| 132 | } |
| 133 | |
| 134 | CHAR pProcessName[MAX_PATH] = "NOT_FOUND"; |
| 135 | GetModuleBaseName(hProcess, 0, pProcessName, sizeof(pProcessName) / sizeof(CHAR)); |
| 136 | |
| 137 | CloseHandle(hProcess); |
| 138 | |
| 139 | processMap[processId] = pProcessName; |
| 140 | } |
| 141 | |
| 142 | return processMap; |
| 143 | } |
| 144 | } |