Статья: Работа с процессами в С/С++. Основные приемы
//теперь, когда у нас есть структура ProcEntry
//То, какую информацию вы из нее возьмете, зависит
//толькоотзадачи ))
printf("%s %un", ProcEntry.szExeFile, ProcEntry.th32ProcessID);
bIsok = Process32Next(pSnap, &ProcEntry);
}
//чистимпамять!
CloseHandle(pSnap);
return 1;
}
Вуаля, список всех процессов, аки в диспетчере задач. Теперь мы сделаем кое-что, чего в диспетчере нет! В адресном пространстве каждого процесса (в области памяти, выделенной ему системой) находятся различные библиотеки, которые, собственно, состовляют ПРИЛОЖЕНИЕ. Это и Kernel32 и GDI и еще множество различных. Наша задача - их все пересчитать и переписать! Для этого действа напишем небольшую функцию.
//Перечисление модулей процесса
int EnumerateModules(DWORD PID)
{
//Входной параметр - идентификатор процесса, чьи модули мы собираемся
//перечислять. Во первых создадим snapshot информации о модулях
//теперь нам нужна информация о конкретном процессе - процессе
//сидентификатором PID
HANDLE pMdlSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, PID);
bool bIsok = false;
//структура с информацией о модуле
MODULEENTRY32 MdlEntry;
//зададимразмер
MdlEntry.dwSize = sizeof(MODULEENTRY32);
//инайдемпервыймодуль
bIsok = Module32First(pMdlSnap, &MdlEntry);
//и далее, как и с процессами
while(bIsok)
{