Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизXP->Kill->Explorer Найти похожие ветки
← →
Newton © (2004-01-19 05:06) [0]Каким образом можно убить процесс Explorera в XP чтоб он повторно не вылез(обычные способы убивания процесса просто его перезагружают).
← →
VMcL © (2004-01-19 06:57) [1]Зачем?
← →
DeadMeat © (2004-01-19 16:29) [2]Ну как зачем?... чтоб он повторно не вылез
← →
DVM © (2004-01-19 18:06) [3]
> Каким образом можно убить процесс Explorera в XP чтоб он
> повторно не вылез(обычные способы убивания процесса просто
> его перезагружают).
Перезагружает его система, потому как в качестве оболочки прописан эксплорер. Убить то можно с пом. TerminateProcess, но лучше до убийства изменить ту строчку в реестре, где прописана оболочка. Тогда он и "не вылезет".
← →
Игорь Шевченко © (2004-01-19 18:49) [4]DVM © (19.01.04 18:06)
> но лучше до убийства изменить ту строчку в реестре, где
> прописана оболочка.
пробовал ?
← →
DVM © (2004-01-19 19:04) [5]
> пробовал ?
Да. В XP получается - стартует то, что туда прописал. Да и без этого у меня убить окончательно тоже получилось с пом. TerminateProcess.
← →
DeadMeat © (2004-01-19 22:29) [6]А если не надо ничего стартовать, а просто убить...?
Как вариант конечно можно прописать адрес своей программы, которая сразу выйдет при запуске, но есть же и другой способ... Как например это делает сам TaskManager??...
← →
DVM © (2004-01-20 17:05) [7]вот, убивает эксплорер с первого раза и рестарт не происходит. Там, не все правильно, но работает.
function KillTask(FileName:String):integer;
var
ContinueLoop:BOOL;
FSnapshotHandle:THandle;
FProcessEntry32:TProcessEntry32;
const
PROCESS_TERMINATE=$0001;
begin
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(FileName))
or (UpperCase(FProcessEntry32.szExeFile)=UpperCase(FileName))) then
Result:=Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),
FProcessEntry32.th32ProcessID),1));
ContinueLoop:=Process32Next(FSnapshotHandle,FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
← →
DeadMeat © (2004-01-20 18:54) [8]Ну вот... А я всё время пользовался TerminateProcess (...,0) либо его ExitCode... Теперь буду знать...
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c