Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как убить процесс, зная его имя... [D7, WinXP]


Max.66RUS ©   (2006-08-03 15:17:00) 

Подскажите пожалуйста кто-нибудь исходник функции или процедуры, которая убивает любой процесс по его имени. У меня есть исходник такой функции, но она не убивает системные процессы. Т.е. функция срабатывает, а процесс всё равно остается. А мне нужно чтобы эта функция убивала и системные процессы. Вот исходник функции, которая есть у меня, может кто-нибудь подскажет как нужно её переделать чтобы с помощью неё убивались и системные процессы. Заранее спасибо.

Вот исходник моей функции:

Function KILL_PROCESS(ExeFileName: string): integer;
Const
PROCESS_TERMINATE=$0001;
Var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
Begin
result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
While integer(ContinueLoop) <> 0 do
Begin
If ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE, BOOL(0),FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
End;
CloseHandle(FSnapshotHandle);
End;


Ketmar   (2006-08-03 16:58:00) [1]

> [11] Max.66RUS ©   (03.08.06 16:49)

значит -- режешь.


Сергей М.   (2006-08-03 16:55:00) [2]


> Max.66RUS ©   (03.08.06 16:49) [11]


> Просто для моей задачи подходит только вариант с убийством
> процессов.


Просто дилетантство твое должно было быть подчеркнуто особо.

Судя по вышеизложенному тобой, НЕТ никакого очевидного повода для принудительного терминироавния процессов, будь они хоть сервисы, хоть хренервисы)


Max.66RUS   (2006-08-03 16:49:00) [3]

Нет - не режу...Просто для моей задачи подходит только вариант с убийством процессов.


Ketmar   (2006-08-03 16:48:00) [4]

> [7] Max.66RUS ©   (03.08.06 16:43)

а чтобы выключить компьютер, ты режешь силовой кабель, идущий от подстанции к дому?


Игорь Шевченко   (2006-08-03 16:45:00) [5]

Max.66RUS ©   (03.08.06 16:43) [7]


> а только пару штук, чтобы отключить таким образом некоторые
> службы...


Службы превосходно отключаются через панель управления...А убийство процессов служб может привести к разного рода непредсказуемым эффектам.


Max.66RUS   (2006-08-03 16:45:00) [6]

Всем спасибо. Буду разбираться.


Сергей М.   (2006-08-03 16:43:00) [7]

Может и есть)
Но лучший исходник - это исходник, рожденный в собственной репе собственной головы)

см. EnumProcesses (psapi.pas)
+ AdjustTokenPrivelegies()


Max.66RUS   (2006-08-03 16:43:00) [8]

Да мне их не все нужно убивать - а только пару штук, чтобы отключить таким образом некоторые службы...


Игорь Шевченко   (2006-08-03 16:41:00) [9]


> А мне нужно чтобы эта функция убивала и системные процессы


А зачем их убивать ? Это негуманно...


Max.66RUS   (2006-08-03 16:32:00) [10]

Может у кого есть всё-таки исходник такой функции?


Сергей М.   (2006-08-03 15:37:00) [11]


> нужно чтобы эта функция убивала и системные процессы.


> как нужно её переделать


Ее не переделать - ее переписать "с нуля" нужно)


Ketmar   (2006-08-03 15:33:00) [12]

> [0] Max.66RUS ©   (03.08.06 15:17)

пакостестроители живут в других местах.


  (2006-08-03 15:31:00) [13]

Удалено модератором


Наверх

Титульная страница Поиск, карта сайта Написать письмо