Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Как завершить 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.036 c
1-1088165114
Opryshok
2004-06-25 16:05
2004.07.11
Подскажите идею по создании терминального окна


1-1088253844
Maratus
2004-06-26 16:44
2004.07.11
Принтер печатает только после постановки в задание всех страниц


1-1088264007
Damager
2004-06-26 19:33
2004.07.11
Total Commander 6


14-1088148001
leonidus
2004-06-25 11:20
2004.07.11
Где найти толковых тестеров для моей программы?


8-1082913821
Keen
2004-04-25 21:23
2004.07.11
Снятие картинки с TPanel...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский