IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Мониторинг процессов, Простейшие действия с процессами
Atreides
сообщение 1.03.2007 15:40
Сообщение #1


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Как сделать, так что бы в ListBox можно было бы отразить процессы, происходящие в данный момент в системе и при выборе из списка специальной кнопкой их закрывать? Примерно догадываюсь, как это сделать, но как формализовать не додумаюсь? Знаю, что надо сделать снимок системы через SnapShot, подключить модуль Thelp32, а как дальше?

Сообщение отредактировано: Atreides - 1.03.2007 15:46


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Atreides
сообщение 14.03.2007 12:54
Сообщение #2


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Вот нашел тут одну ссылку, но она на C, а как перегнать на Delphi?
Цитата
Мониторинг выполняющихся в системе процессов – основа всех приложений для наблюдения за работой информационных систем и их пользователей. Для отслеживания появления в системе новых приложений или завершения выполнявшихся можно использовать два способа:
1. периодическое выполнение снимка состояния системы и его анализ, для чего приложение, рассмотренное в п.1.1.1, подключается к обработчику прерываний таймера. Это просто, но неэффективно – приложения не запускаются и не завершаются то и дело.
2. подключение к процедуре запуска и завершения процессов с помощью функции ядра PsSetCreateProcessNotifyRoutine(), описанной в Windows 2000 DDK, путем регистрации функции обратного вызова. Это не так просто, как хотелось бы, но более эффективно.

1.4 Функция NtQuerySystemInformation

Различная системная информация доступна через функцию NtQuerySystemInformation.
Описание приведено в стиле С для интересующихся.
NTSTATUS  NtQuerySystemInformation(
IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
IN OUT PVOID SystemInformation,
IN ULONG SystemInformationLength,
OUT PULONG ReturnLength OPTIONAL
);
SystemInformationClass указывает тип информации, которую необходимо получить, SystemInformation - это указатель на результирующий буфер,
SystemInformationLength - размер этого буфера,
ReturnLength – количество записанных байт.
Для перечисления запущенных процессов следует установить в параметр SystemInformationClass значение SystemProcessesAndThreadsInformation.
#define SystemInformationClass 5
Возвращаемая структура в буфере SystemInformation:
typedef struct _SYSTEM_PROCESSES { 
ULONG NextEntryDelta;
ULONG ThreadCount;
ULONG Reserved1[6];
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ProcessName;
KPRIORITY BasePriority;
ULONG ProcessId;
ULONG InheritedFromProcessId;
ULONG HandleCount;
ULONG Reserved2[2];
VM_COUNTERS VmCounters;
IO_COUNTERS IoCounters; // только Windows 2000
SYSTEM_THREADS Threads[1];
} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Atreides   Мониторинг процессов   1.03.2007 15:40
volvo   DRKB3 -> Системные функции и WinAPI -> Windo...   1.03.2007 15:50
Atreides   У меня только версия 2.3 и там есть пример просмот...   2.03.2007 17:04
volvo   // Функция завершения процесса - проверено под XP ...   2.03.2007 17:51
Atreides   Зачем править эту строку: Pr_Names [Num] := ...   3.03.2007 9:31
volvo   ProcessTreminate взята из DRKB 2.3 - там есть комм...   3.03.2007 10:42
Atreides   А как сделать, что бы после нажатия кнопки заверше...   7.03.2007 11:21
-Volvo-   Добавь вызов Button1Click, чтобы заново сгенериров...   7.03.2007 11:35
Atreides   Как реализовать, чтобы для выбранного процесса из ...   11.03.2007 16:40
Atreides   При помощи средств Delphi можно узнать, сколько вр...   12.03.2007 19:18
Atreides   Вот нашел тут одну ссылку, но она на C, а как пере...   14.03.2007 12:54
volvo   А что, собственно, там перегонять? Описания структ...   14.03.2007 13:05
Atreides   С помощью NtQuerySystemInformation, можно получить...   14.03.2007 13:11
volvo   Посмотри вот эту тему, там Rouse_ выкладывал непло...   14.03.2007 13:21
Iren   У меня подобное задание: нужно разработать приложе...   15.03.2007 18:33
Atreides   А как сделать, что бы можно было выбрать процесс и...   18.03.2007 12:48
Atreides   Написал передачу параметров процессов в StringGrid...   22.03.2007 19:49
Atreides   Доделал я это задание (получить список выполняющих...   3.04.2007 18:40
Atreides   Может, кто знает, как получить имя файла и его вер...   15.04.2007 17:56


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 26.07.2025 6:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"