プロセス名一覧を取得する

前述した、EnumProcesses関数のサンプルはプロセスIDのみを表示していました。 ここでは、取得したプロセスIDから名前を表示する方法も説明します。

サンプルコード

以下にサンプルを示します。


#include <stdio.h>

#include <tchar.h>
#include <windows.h>
#include <psapi.h>

int
main()
{
 DWORD allProc[1024];
 DWORD cbNeeded;
 int nProc;
 int i;

 // PID一覧を取得
 if (!EnumProcesses(allProc, sizeof(allProc), &cbNeeded)) {
   return 1;
 }

 nProc = cbNeeded / sizeof(DWORD);

 for (i=0; i<nProc; i++) {
   TCHAR procName[MAX_PATH] = TEXT("<unknown>");

   HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
                        PROCESS_VM_READ,
                        FALSE, allProc[i]);

   // プロセス名を取得
   if (NULL != hProcess) {
     HMODULE hMod;
     DWORD cbNeeded;

     if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), 
              &cbNeeded)) {
       GetModuleBaseName(hProcess, hMod, procName, 
               sizeof(procName)/sizeof(TCHAR));
     }
   }

   // プロセス名とPIDを表示
   _tprintf(TEXT("%s  (PID: %u)\n"), procName, allProc[i]);

   CloseHandle(hProcess);
 }

 return 0;
}

IPv6基礎検定

YouTubeチャンネルやってます!