C/C++: Пишем процесс-менеджер

Николай "G" Андреев

Xakep, номер #056, стр. 056-076-3


После того, как ты завершил работу с дескриптором процесса или любым другим хэндлом, стоит его закрыть с помощью функции CloseHandle.

Практика убийства процесса проста так же, как и теория. В нашей программе массив идентификаторов процессов и список связаны, так что при нажатии на кнопку завершения процесса необходимо будет вычислить номер выделенного в списке элемента и уже с ним работать. В итоге код завершения получился довольно компактный:

// вычисляем индекс выделенного элемента

int index = SendDlgItemMessage(hwnd, IDC_LISTBOX1, LB_GETCOUNT, 0, 0);

// открываем процесс из массива с этим индексом

HANDLE hProcess = OpenProcess (PROCESS_ALL_ACCESS, false, idarray[index]);

// убиваем его

TerminateProcess(hProcess, 0);

// закрываем хэндл

CloseHandle(hProcess);

Break

Так уж вышло, что я терпеть не могу стандартные системные утилиты Windows и всегда стараюсь написать свои. Так получилось и с процесс-менеджером. Я описал самую примитивную программу для манипулирования процессами, так что для твоего творчества остается уйма места. Например, ты можешь заменить listbox на listview и добавить к именам процессов их иконки или, например, создать возможность изменения приоритетов процесса с помощью функции SetPriorityClass. Если возникли какие-нибудь вопросы, идеи или замечания - пиши. Постараюсь ответить. Проект для Visual Studio .NET, полный исходный текст программы с подробными комментариями и уже скомпилированный exe'шник ты можешь взять на диске или скачать с сайта www.xakep.ru.

На этом все. Удачного компилирования.

Мне часто пишут письма с просьбой объяснить, как работает та или иная утилита, или чем руководствоваться при написании системных программ. В последнее время при ответе на такие письма я стал ограничиваться всего лишь ссылкой на одну великую книгу: "Programming Applications for Windows" (русское название - "Windows для профессионалов"), автором которой является редактор Microsoft Press Джеффри Рихтер. Эта книга является библией системного программирования под Windows. В ней читатель может найти ответы на все вопросы, возникающие при написании приложений. Безусловно, огромный интерес при прочтении книги вызывает целая глава о перехвате API функций, о технологии, позволяющей как угодно манипулировать системой. Книга содержит в себе огромное количество прекрасно оформленных исходников и будет полезна любому начинающему или продвинутому кодеру.

Назад на стр. 056-076-2  Содержание