Вы можете легко найти решение в Google, как я нашел несколько месяцев назад.Но вкратце вы можете добиться этого с помощью EnumProcesses, функций GetProcessMemoryInfo и GetProcessImageFileName.
список идентификаторов процессов, который вы можете получить следующим образом:
DWORD adwProcesses[1024], dwNeeded, dwProcesses;
if (!EnumProcesses(adwProcesses, sizeof(adwProcesses), &dwNeeded)) { return 1; }
, где вы получаете все идентификаторы процессов.Так что вам нужно знать точное число, сколько процессов было возвращено
dwProcesses = dwNeeded / sizeof(DWORD);
распечатать или сохранить использование памяти столько раз, сколько процессов у вас есть
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, adwProcesses[k]);
PROCESS_MEMORY_COUNTERS pmc;
//Get process memory info and path to process
GetProcessMemoryInfo(hProcess, &pmc, sizeof(pmc));
GetProcessImageFileName(hProcess, szProcessName, sizeof(szProcessName) / sizeof(TCHAR));
, чтобы вы получили данныедля пути процесса:
strProcessName.Format(_T("PATH: %s"), szProcessName);
использование памяти файла подкачки:
strProcessPFMemory.Format(_T("%u K"), (pmc.PagefileUsage / 1024));
пиковое использование памяти файла подкачки:
strProcessPPFMemory.Format(_T("%u K"), (pmc.PeakPagefileUsage / 1024));
и т. д.