DWORD Processes[1024], Needed, NumProcesses;
DWORD i;
char ProcessName[MAX_PATH];
HANDLE hProcess;
HMODULE hModule;
if (!EnumProcesses(Processes, sizeof(Processes), &Needed))
goto fail;
NumProcesses = (Needed / sizeof(DWORD));
for (i = 0; i < NumProcesses; i++) {
hProcess = OpenProcess(GENERIC_ALL, FALSE, Processes[i]);
if (hProcess != NULL) {
if (EnumProcessModules(hProcess, &hModule, sizeof(hModule), &Needed)) {
GetModuleBaseName(hProcess, hModule, ProcessName, sizeof(ProcessName));
// Здесь можно использовать ProcessName
}
}
CloseHandle(hProcess);
}
return 0;
fail:
return -1;
---
Ну и для NT-систем можно напрямую использовать NtQuerySystemInformation (именно ее использует NT-шная реализация psapi)
|