С экрана Explorer исчезает, но не выгружается из памяти. При последующем запуске открывается папка "Мой компьютер", как будто бы Explorer никуда и не выгружался.
Выгружает Explorer полностью, но при последующем запуске Explorer загружается все, что прописано в автозагрузке и реестре.
Соответственно, вопрос: Как бы мне сделать так, чтобы выгружался он полностью и зугружался потом один без всей остальной всячины.
p.s. И что это за параметр lpClassName, при вызове функции FindWindow, чему может быть равен и где о нем что-нибудь почитать, т.к в Справке Builder'a я так ничего и не нашел.
Здравствуйте Каракашев Алексей Викторович, Вы писали:
КАВ>Я нашел в интернете два варианта, но оба работают плохо. Проблема заключается в следующем: КАВ>Первый вариант:КАВ>
КАВ>С экрана Explorer исчезает, но не выгружается из памяти. При последующем запуске открывается папка "Мой компьютер", как будто бы Explorer никуда и не выгружался. КАВ> КАВ>Второй вариант:КАВ>
КАВ>Выгружает Explorer полностью, но при последующем запуске Explorer загружается все, что прописано в автозагрузке и реестре.
КАВ>Соответственно, вопрос: Как бы мне сделать так, чтобы выгружался он полностью и зугружался потом один без всей остальной всячины.
КАВ>p.s. И что это за параметр lpClassName, при вызове функции FindWindow, чему может быть равен и где о нем что-нибудь почитать, т.к в Справке Builder'a я так ничего и не нашел.
lpClassName — имя класса окна, который указывается при создании, в CreateWindow(Ex).
Здравствуйте Каракашев Алексей Викторович, Вы писали:
[skipped]
КАВ>p.s. И что это за параметр lpClassName, при вызове функции FindWindow, чему может быть равен и где о нем что-нибудь почитать, т.к в Справке Builder'a я так ничего и не нашел.
КАВ> Заранее благодарен.
Класс окна — это специальный набор данных (организованный в структуру) с помощью которого создается окно. С классом окна связана оконная процедура, курсор, фон и проч. фигня. Класс окна можно рассмотривать как шаблон для настоящих окон. Например, в системе полно кнопок, едитбоксов, комбобоксов, ты думаешь для каждого из них написана своя оконная процедура? Нет! Она одна на класс. Все стандартные кнопки (класс BUTTON) имеют одну оконную процедуру, кисть для закраски фона и проч. Это очень экономно и эффективно.
При поиске какого-либо окна ты можешь значительно сузить исходное множество окон указав в параметре имя класса.
Спасибо за ответы на вопрос о классах окон, но только основной вопрос — по поводу Explorer'a. Как бы мне так его выгрузить, чтобы потом он загружался один, без остальных программ (они уже загружены), и не "Моим компьютером" при отсутствии рабочего стола, а рабочим столом со всеми иконками и панелью задач?
Заранее благодарен.
Здравствуйте Каракашев Алексей Викторович, Вы писали:
KАВ>Соответственно, вопрос: Как бы мне сделать так, чтобы выгружался он полностью и зугружался потом один без всей остальной всячины.
Во-первых, при загрузке в качестве шелла Explorer создает мьютекс ExplorerIsShellMutex, и в принципе всегда можно прибить процесс, создавший этот мьютекс.
Во-вторых, при загрузке он осуществляет проверку, есть ли еще Explorer-ы, и только если их нет — грузится как шелл, выполняя весь автозапуск. Поэтому на первое можно забить, ибо для того чтобы перегрузить шелл, все равно надо прибить все Explorer-ы, так что тупо перечисляем процессы, и если кто назвался Explorer-ом — Terminate.
В-третьих, все известные мне методы, когда Explorer игнорирует автозапуск, устроены так, что Explorer САМ понимает, что ему не надо лезть в автозапуск (то есть, или политики читает, или состояния клавиш смотрит), и (например, в командной строке) ему это не передать.
Так что либо политики на это время правим, либо забиваем вообще на этц идею, что имхо правильнее.
Здравствуйте Каракашев Алексей Викторович, Вы писали:
КАВ>Спасибо за ответы на вопрос о классах окон, но только основной вопрос — по поводу Explorer'a. Как бы мне так его выгрузить, чтобы потом он загружался один, без остальных программ (они уже загружены), и не "Моим компьютером" при отсутствии рабочего стола, а рабочим столом со всеми иконками и панелью задач?
Ищи и прибивай процесс эксплорера, тот, что дольше работет. Можно настроить так эксплорер, что у него будет несколько процессов. Поэтому прибивать надо самый старый.
Ничего плохого в этом не будет. Потом запускаешь — все путем.