Статья: Работа с процессами в С/С++. Основные приемы

//теперь, когда у нас есть структура 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)

{

К-во Просмотров: 400
Бесплатно скачать Статья: Работа с процессами в С/С++. Основные приемы