#include #include #include int main() { DWORD processes[1024], cbNeeded, cProcesses; unsigned int i; // Enumerate the processes if (!EnumProcesses(processes, sizeof(processes), &cbNeeded)) { return 1; } // Calculate how many process identifiers were returned cProcesses = cbNeeded / sizeof(DWORD); // Print the process name and identifier for each process for (i = 0; i < cProcesses; i++) { if (processes[i] != 0) { TCHAR szProcessName[MAX_PATH] = TEXT(""); // Get a handle to the process HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processes[i]); // Get the process name if (NULL != hProcess) { HMODULE hMod; DWORD cbNeeded; if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) { GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)); } // Print the process name and identifier wprintf(L"%ls (PID: %u)\n", szProcessName, processes[i]); CloseHandle(hProcess); } } } return 0; }