Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

Как завершить Explorer.exe?   Найти похожие ветки 

 
Seldon ©   (2004-05-30 15:15) [0]

Через TerminateProcess - он закрывается и тут же открывается снова.


 
Piter ©   (2004-05-30 17:50) [1]

Seldon (30.05.04 15:15)
Как завершить Explorer.exe


а зачем?


 
Seldon ©   (2004-05-30 18:58) [2]

Чтоб освободить память, им занимаемую. Зачем? Для запуска игрушки.


 
VMcL ©   (2004-05-30 19:03) [3]

>>Seldon ©  (30.05.04 15:15)

>Через TerminateProcess - он закрывается и тут же открывается снова.

Ибо нефиг.


 
Seldon ©   (2004-05-30 19:10) [4]

А если очень надо?

Кто в компе хозяин: я или Windows? (c)


 
Piter ©   (2004-05-30 20:19) [5]

windows


 
Piter ©   (2004-05-30 20:20) [6]

если она запущена...


 
VMcL ©   (2004-05-30 20:31) [7]

>>Seldon ©  (30.05.04 19:10) [4]

>Кто в компе хозяин: я или Windows? (c)

Кнопки Power и Reset :)


 
Seldon ©   (2004-05-30 20:35) [8]

Ребята и мужики, давайте по существу :)


 
Плохиш   (2004-05-30 21:10) [9]


> Seldon ©   (30.05.04 18:58) [2]
> Чтоб освободить память, им занимаемую. Зачем? Для запуска
> игрушки.

Давно так не смеялся :-))))


 
Piter ©   (2004-05-30 21:11) [10]

А все уже сказано - Explorer является неотъемлемой частью windows. Как кока-кола и бигмак


 
Seldon ©   (2004-05-30 21:16) [11]

>Плохиш   (30.05.04 21:10) [9]
Я рад за тебя.

>Piter ©   (30.05.04 21:11) [10]
TaskManager его легко снимает.

>Как кока-кола и бигмак
Не, кока-колу можно снести. Я вместо неё квас ставлю. :)


 
Piter ©   (2004-05-30 21:40) [12]

Seldon (30.05.04 21:16) [11]
TaskManager его легко снимает


кого? TaskManager использует тот же самый TerminateProcess


 
Piter ©   (2004-05-30 21:41) [13]

Приведи код программы по использованию TerminateProcess


 
DVM ©   (2004-05-30 22:00) [14]

function KillProcessByFileName(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;


 
DVM ©   (2004-05-30 22:01) [15]

function KillProcessByFileName(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),
                                   1));
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
 end;
 CloseHandle(FSnapshotHandle);
end;


 
Piter ©   (2004-05-30 22:13) [16]

DVM (30.05.04 22:01) [15]

ты где такой код взял, умник? :)


 
Piter ©   (2004-05-30 22:14) [17]

Или Seldon = DVNM?


 
Piter ©   (2004-05-30 22:14) [18]

Seldon = DVM?


 
Piter ©   (2004-05-30 22:19) [19]

Вогт это хорошо:

while Integer(ContinueLoop) <>

и это тоже:

Result := Integer(TerminatePro...

И вообще, где получение привелегий на случай запуска под NT?


 
DVM ©   (2004-05-30 22:22) [20]


> Piter ©   (30.05.04 22:13) [16]
> DVM (30.05.04 22:01) [15]
>
> ты где такой код взял, умник? :)

1) Seldon <> DVM?
2) Без оскорблений пожалуйста.
3) Код имеет некоторые огрехи.
4) Он все-таки работает.
5) Код не мой, наковырял у себя среди прочего хлама.


 
Seldon ©   (2004-05-30 23:21) [21]

Нет, Seldon<>DVM.

Вот мой код.


var
 SShot:Cardinal;
 Entry:TProcessEntry32;
 FN:String;
begin
 SShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 Entry.dwSize:=SizeOf(TProcessEntry32);

 Process32First(SShot,Entry);
 repeat
   if Entry.th32ProcessID<>0 then
   begin
     FN:=Entry.szExeFile;
     if CompareText(FN,"explorer.exe")=0 then
     begin
       TerminateProcess(OpenProcess(PROCESS_TERMINATE,false,Entry.th32ProcessID,0); // а надо 1
       Break
     end;
   end
 until not Process32Next(SShot,Entry);

 CloseHandle(SShot);
end;


Всё дело в той самой единичке. Всем спасибо.

PS. Кстати, а на что влияеят этот самый uExitCode?
PPS. Piter, а как получить эти самые привилегии?


 
Игорь Шевченко ©   (2004-05-30 23:47) [22]

Piter ©   (30.05.04 22:19) [19]


> И вообще, где получение привелегий на случай запуска под
> NT?


А что, нужны ?


 
DVM ©   (2004-05-30 23:59) [23]

В дополнение к коду выше. А не нужно ли делать CloseHandle на то, что возвращает OpenProcess?

> PS. Кстати, а на что влияеят этот самый uExitCode?

Тоже интересовался на этот счет, в MSDN очень кратко написано:
uExitCode
[in] Exit code to be used by the process and threads terminated as a result of this call. Use the GetExitCodeProcess function to retrieve a process"s exit value. Use the GetExitCodeThread function to retrieve a thread"s exit value.


 
Gero ©   (2004-05-30 23:59) [24]


> А все уже сказано - Explorer является неотъемлемой частью
> windows

Ха-ха-ха.


 
Piter ©   (2004-05-31 00:07) [25]

Seldon (30.05.04 23:21) [21]
Всё дело в той самой единичке. Всем спасибо


1) TerminateProcess сама по себе функция, которую надо вызывать в крайнем случае...
2) еще раз повторю, что explorer неотделим от windows. Не надо его завершать.

uExitCode определяет код завершения процесса. Если ноль - то, по моему, это значит нормальное завершение (хотя какое нафиг нормальное, если был вызван TerminateProcess). Если не ноль - то аварийное. Вот видимо windows восстанавливает explorer, если он нормально завершился (код выхода ноль), и не восстанавливает, если завершился аварийно (единица или там еще чего).

Seldon (30.05.04 23:21) [21]
Piter, а как получить эти самые привилегии?


с помощью функции AdjustTokenPrivileges. Допустим, нужно получать Debug привелегии, чтобы иметь возможность терминировать сервисы. Например, чтобы убить Outpost Firewall, работающий в режиме сервиса :)


 
Piter ©   (2004-05-31 00:08) [26]

Игорь Шевченко (30.05.04 23:47) [22]
А что, нужны ?


смотря дл чего. Для некоторых вещей - нужны... см. предыдущий пост


 
Piter ©   (2004-05-31 00:10) [27]

Gero (30.05.04 23:59) [24]
Ха-ха-ха


есть возражения?


 
Gero ©   (2004-05-31 00:13) [28]


> Piter ©   (31.05.04 00:10)

Ну допусим я без explorer"а работаю и совсем забыл про него.
Какая же это неотъемлимая часть?


 
DVM ©   (2004-05-31 00:15) [29]


> Piter ©   (31.05.04 00:07) [25]


> uExitCode определяет код завершения процесса. Если ноль
> - то, по моему, это значит нормальное завершение (хотя какое
> нафиг нормальное, если был вызван TerminateProcess). Если
> не ноль - то аварийное.

Конкретно про 1 нигде не написано. По крайней мере я не нашел. Просто как-то попробовал - эксплорер умер. До этого перезапускался.

> еще раз повторю, что explorer неотделим от windows. Не
> надо его завершать.

Почему не надо то? Отделим еще как.


 
Piter ©   (2004-05-31 00:15) [30]

Gero (31.05.04 00:13) [28]

не путай процесс Explorer.exe у тебя в памяти, и окна Explorer"а, которые ты никогда не открываешь...


 
Piter ©   (2004-05-31 00:16) [31]

DVM (31.05.04 00:15) [29]
Конкретно про 1 нигде не написано


угу. И про 2 тоже не написано. И даже про 3, 4, 5 и т.д.


 
Piter ©   (2004-05-31 00:17) [32]

DVM (31.05.04 00:15) [29]
Почему не надо то? Отделим еще как.


ой, да делайте что хотите в своих программах, только мне их не присылайте :)


 
Gero ©   (2004-05-31 00:17) [33]


> Piter ©   (31.05.04 00:15)

У меня нет в памяти процесса explorer.exe.
Да и откуда ему взяться, он же не запускается сам по себе.


 
DVM ©   (2004-05-31 00:19) [34]


> не путай процесс Explorer.exe у тебя в памяти, и окна Explorer"а,
> которые ты никогда не открываешь...

например?


 
Piter ©   (2004-05-31 00:26) [35]

Gero (31.05.04 00:17) [33]
У меня нет в памяти процесса explorer.exe.


да ладно? Как это? Без Explorer.exe у тебя не будет ни пуска, ни рабочего стола...

DVM (31.05.04 00:19) [34]
например?


что например?


 
Gero ©   (2004-05-31 00:27) [36]


> да ладно? Как это? Без Explorer.exe у тебя не будет ни пуска,
> ни рабочего стола...

LOL.
Ну допустим нет и что?
Мне и без них прекрасно живется.


 
Seldon ©   (2004-05-31 00:28) [37]

>да ладно? Как это? Без Explorer.exe у тебя не будет ни пуска, ни рабочего стола...
Точно. А альтернативные шеллы?


 
Piter ©   (2004-05-31 00:30) [38]

Gero (31.05.04 00:27) [36]
Ну допустим нет и что?


у тебя их действительно нету? или ты просто поспорить решил по поводу хорошено настроения?

IconTray у тебя тоже нету?


 
DVM ©   (2004-05-31 00:31) [39]


> да ладно? Как это? Без Explorer.exe у тебя не будет ни пуска,
> ни рабочего стола...

Вы смеетесь что ли? Пуск, панель задач, рабочий стол со значками - это что неотъемлемые атрибуты системы? Есть куча других оболочек - можно поставить любую. У меня стоит своя собственная - там есть и пуск и панель задач и десктоп и даже трей. И называется она не Explorer.

> что например?

Да мне показалось... Фраза звучала так, что есть некие другие окна эксплорера, о существовании которых никто не догадывается.


 
Seldon ©   (2004-05-31 00:31) [40]

Их вполне может не быть. Aston, talisman. например.



Страницы: 1 2 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.062 c
14-1087740468
DDDeN
2004-06-20 18:07
2004.07.11
CDA Track Project


1-1088067133
legioner
2004-06-24 12:52
2004.07.11
копирование


4-1086121146
user's
2004-06-02 00:19
2004.07.11
Как получить текущее время вплоть до microseconds?


4-1085520884
Германн
2004-05-26 01:34
2004.07.11
Documents and Settings


3-1087287584
Паниковский
2004-06-15 12:19
2004.07.11
Insert