Explorer повторно загружается

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Explorer повторно загружается

Сообщение Proxy » 01.03.2008 (Сб) 22:51

Пишу свой шел, естественно выгружаю explorer, чтоб не занимал оперативу, но он через некоторое время вновь загружается.

Код: Выделить всё
...
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
...

Sub CloseExplorer()
Dim hwnd As Long
Dim pid As Long
Dim hproc As Long
Dim ecode As Long
hwnd = FindWindow("Shell_traywnd", "")
If Not hwnd = 0 Then
  GetWindowThreadProcessId hwnd, pid
  hproc = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
  GetExitCodeProcess hproc, ecode
  TerminateProcess hproc, ecode
  CloseHandle hproc
End If
End Sub


Так вот CloseExplorer выгружает только на секунд 10. Как-то же Диспечер задач выгружает его нормально? Но как? В чём ошибка?

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Сообщение HiSER » 01.03.2008 (Сб) 23:04

А зачем его постоянно выгружать не проще ли записать в реестр:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]

Shell="My_shell.exe"

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 02.03.2008 (Вс) 12:55

А закрывать его более гуманным и традиционным способом не пробовал (я про WM_CLOSE/WM_QUIT)?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 02.03.2008 (Вс) 15:36

А смысл? Ему ж ничего сохранять перед выходом не надо. Так быстрее.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 04.03.2008 (Вт) 8:35

Лучше способ HiSER

а если у вас много пользователей, то создайте аналогичный ключ в
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell="My_shell.exe"]
он будет иметь приоритет над вышеприведенным.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Kotyara
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 25.07.2008 (Пт) 21:55

Re: Explorer повторно загружается

Сообщение Kotyara » 16.08.2008 (Сб) 21:55

Работа процесса explorer.exe отслеживаетcя winlogon.exe. Если закрыть explorer.exe некоторым методами (например. в языке AutoIt3 это функция ProcessClose), он перезапустится. Его нужно закрывать запуском
taskkill.exe /im explorer.exe /f.
Некоторые методы закрытия, такие как taskkill.exe /im explorer.exe, приведут к появлению диалога выключения компьютера. Такой же результат даст Alt-F4.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Explorer повторно загружается

Сообщение ANDLL » 16.08.2008 (Сб) 22:33

Proxy писал(а):В чём ошибка?
В использовании GetExitProcessCode
Короче, вот http://forum.sources.ru/index.php?showtopic=226657 (#5)
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re:

Сообщение FaKk2 » 18.08.2008 (Пн) 20:59

Proxy писал(а):А смысл? Ему ж ничего сохранять перед выходом не надо. Так быстрее.


Ты настолько хорошо изучил его процедуру выхода, что можешь с уверенностью делать такие заключения?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Explorer повторно загружается

Сообщение Proxy » 19.08.2008 (Вт) 8:07

Вы посмотрите вообще, когда я создавал этот топик? Я его благополучно отправил на тот свет, а вы толпой его разрыли и отнекрофилили. Меня эта тема уже не интересует, я во всём давно разобрался. Пасиб конечно за заботу, но закройте эту ветку.
Follow the white rabbit.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Explorer повторно загружается

Сообщение FaKk2 » 19.08.2008 (Вт) 20:15

Это кстати интересная тема - некрофилия.
С одной стороны человеку, который создал новый топик тыкают носом в уже существующий.
С другой стороны человеку, который не создал новый топик, а написал в уже существующий, обвиняют в некрофилии.

WTF?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Explorer повторно загружается

Сообщение Хакер » 19.08.2008 (Вт) 20:21

FaKk2 писал(а):WTF?

Одно дело, когда человек задаёт вопрос на околосабжевую тему в старом топике. Другое, когда он постит в неё ответ, актуальность которого вызывает сомнения. Или когда начинает разводить в ней вообще оффтопик.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Explorer повторно загружается

Сообщение FaKk2 » 19.08.2008 (Вт) 20:31

Хакер писал(а):Одно дело, когда человек задаёт вопрос на околосабжевую тему в старом топике. Другое, когда он постит в неё ответ, актуальность которого вызывает сомнения.


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

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Explorer повторно загружается

Сообщение Viper » 20.08.2008 (Ср) 7:17

Ну вот еще холиваров о некрофилии нам не хватало! Закрываю.
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 75

    TopList