Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как перезапустить Program Manager? "Убить" могу, восстановить не получается 
:(
    Опции темы
Rowi
Дата 7.1.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2005
Где: Украина

Репутация: нет
Всего: нет



Здравствуйте, все!

Подскажите, пожалуйста, после того, как программа "убила" Explorer:

Код
PostMessage(FindWindow(nil,'Program Manager'),WM_QUIT,1,0)


может ли она (программа) полностью восстановить всё, относящееся
к Explorer'у (кнопку Пуск, Панель задач и т.п.)
без перезагрузки компьютера?

Пытаюсь
Код
ShellExecute(0,'open','Explorer',nil,nil,SW_SHOWNORMAL)

но только открывается окно "Мои документы", а ничего
не восстанавливается smile .


PM MAIL   Вверх
SoWa
Дата 7.1.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



Странно. Должно нормально восстановиться. А посмотри в CAD, все Explorer убиты?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Poseidon
Дата 7.1.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 10
Всего: 133



Если убит Explorer, то винда сама пытается восстановить его (так по дефолту по крайней мере)


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
FRAGNATIC
Дата 7.1.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Цитата(Poseidon @ 7.1.2006, 22:08 Найти цитируемый пост)

Если убит Explorer, то винда сама пытается восстановить его (так по дефолту по крайней мере)

так от сервис пака зависит вроде)
хотя у меня так и не востовналивает если я сам его убью но если при какомлибо зависании он просто уходит в даун и отрубается то тогда винда его сама востонавливает
Цитата(Rowi @ 7.1.2006, 21:29 Найти цитируемый пост)

но только открывается окно "Мои документы", а ничего

такое происходит если эксплорэр не вырубился)
потому что если кильнуть процес самому и потомже через меню выполнить опятьже вызвать explorer.exe то всё востоналивает номано
попробую может
Winexec('Explorer.exe',0)


PM MAIL   Вверх
Rowi
Дата 8.1.2006, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2005
Где: Украина

Репутация: нет
Всего: нет



Цитата(SoWa @ 7.1.2006, 21:37 Найти цитируемый пост)

А посмотри в CAD, все Explorer убиты?

Я дико извиняюсь, но что такое CAD? Если я правильно догадался - Диспетчер задач Windows?


Цитата(FRAGNATIC @ 7.1.2006, 22:17 Найти цитируемый пост)

Цитата(Poseidon @ 7.1.2006, 22:08 )
Если убит Explorer, то винда сама пытается восстановить его (так по дефолту по крайней мере)


так от сервис пака зависит вроде)
хотя у меня так и не востовналивает если я сам его убью но если при какомлибо зависании он просто уходит в даун и отрубается то тогда винда его сама востонавливает

Именно так у меня и происходит - ДОСЛОВНО!
(Кстати, у меня WinXP SP2)

PM MAIL   Вверх
FRAGNATIC
Дата 8.1.2006, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Цитата(Rowi @ 8.1.2006, 01:37 Найти цитируемый пост)

Я дико извиняюсь, но что такое CAD? Если я правильно догадался - Диспетчер задач Windows?

три клавишии
Ctrl +ALt+Delete
Добавлено @ 01:49
Rowi
а вообще оно так и будет работать как ты говоришь тока в том случаии если когда ты таким вот образом убивал эксплорэр было открыто какойнить окно провдника типа диск С или Д или какая-то папка! убивается сам эксплорэр но остаётся висеть это окно процес которого тоже ехсплорэр и когда ты пытаешся заново запустить эксплорэр он видет что такой процес уже есть и думает что это кокрас и есть тот эксплорэр который в себя включает пуск и тп , и поэтому запускает проводник=)
так что килить те надо не прсото окно Program Manager а сами процесы=)
PM MAIL   Вверх
Rowi
Дата 8.1.2006, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2005
Где: Украина

Репутация: нет
Всего: нет



Ой... я, кажется, сам разобрался! smile
Похоже, я запутался в собственных экспериментах:

не получалось всё восстановить, если хэндл "жертвы" я получал так:
Код

  Wnd := FindWindow('Shell_TrayWnd', nil);
  Wnd := FindWindowEx(Wnd, HWND(0), 'Button', nil);

т.е. я убивал кнопку Пуск (собственно, сначала я к этому и стремился). При этом все "симптомы" те же, как и при убиении ProgMan'a. (Кстати, интересно - почему? И можно ли как-то восстановить в этом случае?)

Разница заметна только в Диспетчере задач (Ctrl +ALt+Delete): в этом случае в списке процессов explorer.exe остаётся! А насколько я знаю, если запускать второй (третий и т.д.) экземпляр explorer'a, то как раз и открывается только окно обзора.

А в случае того кода, что я приводил в начале - всё чудненько восстанавливается!
Так что ооочччень прошу меня извинить за ложную тревогу и за мою собственную рассеянность...

Это сообщение отредактировал(а) Rowi - 8.1.2006, 03:09
PM MAIL   Вверх
Albinos_x
Дата 8.1.2006, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 3
Всего: 108



Цитата(Rowi @ 8.1.2006, 03:06 Найти цитируемый пост)

т.е. я убивал кнопку Пуск (собственно, сначала я к этому и стремился).

Код

 // Скрывает (вариант 1)  
  procedure TForm1.Button1Click(Sender: TObject);  
  var Rgn:hRgn;  
  begin  
  Rgn:=CreateRectRgn(0,0,0,0);  
  SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),Rgn,true);  
  end;  
  
 // Показывает (вариант 1)  
  procedure TForm1.Button2Click(Sender: TObject);  
  begin  
  SetWindowRgn(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),0,true);  
  end;  
  
 // Скрывает (вариант2)  
  procedure TForm1.Button5Click(Sender: TObject);  
  begin  
  ShowWindow(GetWindow(FindWindow('Shell_TrayWnd',nil),GW_CHILD),SW_HIDE);  
  end;  
  
 // Показывает (вариант2)  
  procedure TForm1.Button6Click(Sender: TObject);  
  begin  
  ShowWindow(GetWindow(FindWindow('Shell_TrayWnd',nil),GW_CHILD),SW_NORMAL);  
  end;  
  
 // Делает недоступной  
  procedure TForm1.Button3Click(Sender: TObject);  
  begin  
  EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),false);  
  end;  
  
 // Снова доступна  
  procedure TForm1.Button4Click(Sender: TObject);  
  begin  
  EnableWindow(FindWindowEx(FindWindow('Shell_TrayWnd',nil),0,'Button',nil),true);  
  end;  
   ...  
  //Коментарий: Клавиша Windows срабатывает во всех вариантах               ///////////////////////////////////




--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
bartram
Дата 8.1.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1606
Регистрация: 22.2.2004
Где: Russia, Samara

Репутация: 3
Всего: 29



Rowi, так Пуск является "сoбственностью" Explorer и поэтому когда ты убиваешь пуск, убивается и панель задач (визуально) а сам процесс Explorer.exe остается висеть в памяти, для скрытия кнопки Пуск юзай методы которые показал Albinos_x


--------------------
В каждом из нас спит гений, но с каждым днем все крепче ;-)
bartram.ru
Twitter
user posted image 

PM MAIL ICQ   Вверх
Rowi
Дата 8.1.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2005
Где: Украина

Репутация: нет
Всего: нет



Цитата(Albinos_x @ 8.1.2006, 04:02 Найти цитируемый пост)

//Коментарий: Клавиша Windows срабатывает во всех вариантах

Как раз это меня и не устраивало (я ранее пробовал эти варианты), а плюс ещё и <Ctrl+Esc>!
Поэтому и пришёл к необходимости убивать либо кнопку "Пуск", либо весь Explorer. С Hook'ами связываться почему-то не хотелось.
PM MAIL   Вверх
Rowi
Дата 8.1.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 12.12.2005
Где: Украина

Репутация: нет
Всего: нет



Цитата(Rowi @ 8.1.2006, 03:06 Найти цитируемый пост)

все "симптомы" те же, как и при убиении ProgMan'a.

Продолжая свои эксперименты, я таки заметил небольшую разницу:
  • Когда убивается только кнопка, при сворачивании разных рабочих окон они "складываются" внизу наподобие, как ChildForm в MDI. При этом, естественно, легче с ними работать.
  • А когда убивается весь Explorer, то эти окна при сворачивании просто "исчезают", и достать их можно только по <Alt+Tab>, что соответственно, не так удобно.
Поэтому первый вариант всё-таки чуть лучше.

И вроде уже придумал, как тут быть (правда, "из Москвы в Питер через Магадан" smile ):
Я сначала убиваю только кнопку, а когда потом надо всё восстановить, то сперва "добиваю" весь Explorer, а только потом его запускаю по новой. Несколько морочливо, но работает!

P.S. Проблема вроде как решена (всем огромное спасибо за отзывчивость!), но если кто-нибудь всё же наведёт на мысль, как "в Питер напрямую попасть smile ", то это уже будет решение на 100%!
Только из-за этой надежды пока не пометил вопрос, как "решённый"...

Это сообщение отредактировал(а) Rowi - 8.1.2006, 13:58
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.