Як отримати інформацію про всі запущені процеси в Windows

Коли розробляєте системні програми, отримання детальної інформації про запущені процеси може бути критично важливим. Windows API надає різноманітні функції, які дозволяють розробникам збирати дані про активні процеси.

Отримання інформації про процеси за допомогою Windows API

Для отримання інформації про всі поточні запущені процеси в середовищі Windows використовується функція EnumProcesses. Ця функція є частиною Windows API і оголошена в заголовковому файлі psapi.h.

Приклад коду для переліку запущених процесів

#include  // Потрібно імпортувати першим перед tlhelp32.h  
#include   
#include   

int main() {  
 HANDLE hProcessSnap;  
 PROCESSENTRY32 pe32;  

 // Отримання знімка всіх процесів  
 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
 if (hProcessSnap == INVALID_HANDLE_VALUE) {  
 printf("Не вдалося отримати знімок процесів.");  
 return 1;  
 }  

 pe32.dwSize = sizeof(PROCESSENTRY32);  

 // Отримання інформації про перший процес  
 if (!Process32First(hProcessSnap, &pe32)) {  
 printf("Не вдалося отримати інформацію про перший процес.");  
 CloseHandle(hProcessSnap);  
 return 1;  
 }  

 do {  
 printf("ID процесу: %u\tІм'я виконуваного файлу: %s\n", pe32.th32ProcessID, pe32.szExeFile);  
 } while (Process32Next(hProcessSnap, &pe32));  

 CloseHandle(hProcessSnap);  
 return 0;  
}

Пояснення коду

  1. CreateToolhelp32Snapshot: Створює знімок усіх запущених процесів.
  2. Process32First: Отримує інформацію про перший процес у знімку.
  3. Process32Next: Перебирає всі наступні процеси у знімку.
  4. CloseHandle: Звільняє дескриптор знімка після обробки.

Інформація про процеси, що отримується

Структура PROCESSENTRY32 містить детальну інформацію про кожний процес, зокрема:

+-----------------+-------------------------------+  
| Поле            | Опис                         |  
+-----------------+-------------------------------+  
| dwSize          | Розмір структури             |  
| th32ProcessID   | Унікальний ідентифікатор процесу |  
| th32ThreadCount | Кількість потоків            |  
| th32ParentProcessID | ID батьківського процесу  |  
| szExeFile       | Ім'я виконуваного файлу      |  
+-----------------+-------------------------------+

Висновок

За допомогою Windows API розробники можуть отримувати важливу інформацію про запущені процеси, що є необхідним для налагодження, моніторингу та управління системними ресурсами. Наведений приклад демонструє, як перелічити всі активні процеси та витягти з них відповідні дані.

Перекладено з: How to Obtain Information About All Running Processes in Windows

Leave a Reply

Your email address will not be published. Required fields are marked *