アクティブプロセス測定 その2

で、作ってみた。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。

http://d.hatena.ne.jp/kkobayashi_a/20060511#p1