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 однако!! провались они там пропадом все.......... |
|
|