C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как следить за процессами в памяти?
sergius_2000
  Отправлено: 28.03.2004, 11:27


Ученик-кочегар

Группа: Участник
Сообщений: 4



Здравствуйте! Сразу к делу:
Умею выдать список процессов, запущенных в памяти (через TlHelp32):

HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
PROCESSENTRY32 *Proc = new PROCESSENTRY32();
Process32First(hSnap,Proc);
.
.
.

Но не могу понять, как контролировать появление (удаление) очередного в момент появления (удаления) ? Подскажите хотя бы направление движения:)
klen
Отправлено: 29.03.2004, 23:52


Машинист паровоза

Группа: Участник
Сообщений: 239



Я такойже херней занимался.
Все что я нарыл — без криминала ни как, API не дает такой возможности.
Все что остается — переодически делать снимок системы. ТaskManager так и работает кстате.
С другой стороны с криминалом — писать драйвер доступа к менеджеру процессов, или по другому — шедуллеру (залазить в его структуры), возможно хук написать на вызов его внутренных функций.

Я проблему решал по другому............... перехват вызова функций CreateProcess, CreateThread — мимо них ничего не пройдет !!! (Фиберы не в счет) , а вот с окончание потока и процесса решение такое, как только отснял вызов CreateProcess, запоминаешь хендл поражденного процесса, и ставишь его в своей нити на ожидание WaitForSingleObject (handle, INFINITE),
как только разблокируется — значит процес завершен.

Вот в общих словах и все. Дальше рыть — котлован получится до центра земли.
Зачем тебе такие дебри?
Темболее это в комерческий продукт не вставишь, модификация кода ядра Windows однако!! провались они там пропадом все..........

Вернуться в Вопросы программирования в C++Builder