で、作ってみた。psapi.dllを使うので9x、Meでは動かないと思うけど別にいっか。
#include <iostream> #include <windows.h> using namespace std; int main(){ HINSTANCE hInstpsapi; BOOL (*fpEnumProcesses)(DWORD *, DWORD, DWORD *); DWORD lpidProcess[1024], cbNeeded; int i, n; if((hInstpsapi = LoadLibrary("psapi.dll")) == NULL){ return 1; } if((fpEnumProcesses = (BOOL (*)(DWORD *, DWORD, DWORD *)) GetProcAddress(hInstpsapi, "EnumProcesses")) == NULL){ return 2; } fpEnumProcesses(lpidProcess, sizeof(lpidProcess), &cbNeeded); n = cbNeeded / sizeof(DWORD); for(i=0; i<n; i++) { cout << lpidProcess[i] << endl; } FreeLibrary(hInstpsapi); return 0; }
PIDからプロセス情報を取得するには、OpenProcessでプロセスハンドルを取得すればOK。