Raspuns: Sunt mai multe rezolvari, prima fiind apelarea functiei EnumProcesses din biblioteca PSAPI.DLL.
In exemplul de mai jos se afiseaza la consola ID-urile proceselor din sistem.
Code: Select all
#include <windows.h>
#include <psapi.h>
#include <iostream>
#include <vector>
#pragma comment(lib, "psapi.lib") // link to PSAPI library
size_t EnumProcessIdentifiers(std::vector<DWORD>& arrIDs);
// NOTE: UNICODE not defined
int main()
{
std::vector<DWORD> vIDs;
const size_t count = EnumProcessIdentifiers(vIDs);
for(size_t index = 0; index < count; index++)
{
std::cout << vIDs[index] << std::endl;
}
system("pause");
return 0;
}
size_t EnumProcessIdentifiers(std::vector<DWORD>& vIDs)
{
vIDs.clear();
const DWORD cb = 1024; // assume enough
DWORD dwBytesReturned = 0;
DWORD dwIDs[cb];
if(::EnumProcesses(dwIDs, cb, &dwBytesReturned))
{
size_t size = dwBytesReturned / sizeof(DWORD);
vIDs.resize(size);
for(size_t index = 0; index < size; index++)
{
vIDs[index] = dwIDs[index];
}
}
else
{
DWORD dwError = ::GetLastError();
// ... handle error
}
return vIDs.size();
}
- In sistemele de operare Windows 7 si Windows Server 2008 R2, functia EnumProcesses se gaseste in KERNEL32.DLL.
Vezi si