Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2008, 18:21   #1
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию Замена стандартного Shell'а своим

Есть практически законченный проект. В нем стоит задача заменить стандартную Windows-оболочку (т.е. Explorer) на некую свою.
Для этого определяется параметр Shell в реестре по адресу:
HCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon

Проблема в том, что если там стоит что-то, отличное от Explorer (пусть даже calc.exe или же notepad.exe), то при загрузки экран приветствия висит секунд 30. Такое ощущение, что нужно как-то сигнализировать о том, что оболочка загружена, но т.к. моя программа этого не делает, экран приветствия висит некоторое время и убирается сам (по таймауту).

Вопрос в том, как же сделать свою оболочку, что бы не было этого подвисания на экране приветствия (тестировалось в WinXP).
Arigato вне форума Ответить с цитированием
Старый 31.07.2008, 21:06   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Откройте именованый event "ShellReadyEvent" и попробуйте выставить его в нужный момент. GINA ждёт запуска шелла и "докладывает" об этом Winlogon'у.
B_N вне форума Ответить с цитированием
Старый 02.08.2008, 14:19   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,220
По умолчанию

B_N
Спасибо, все заработало как надо

Если кому понадобится, вот код, который нужно вставить в момент запуска приложения:
Код:
var H: THandle;
...
  H := OpenEvent (EVENT_MODIFY_STATE, False, 'msgina: ShellReadyEvent');
  if H = 0 then H := OpenEvent (EVENT_MODIFY_STATE, False, 'Global\\msgina: ShellReadyEvent');
  if H <> 0 then
  begin
    SetEvent (H);
    CloseHandle (H);
  end; {if}
Arigato вне форума Ответить с цитированием
Старый 02.08.2008, 15:53   #4
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

[OFF]
ппц B_N ... всю кухню знает) чувак ты крут (Y)
помню тоже были проблемы с этой бедой, ничего ненагуглив путного, плюнул...
---------------------
сорри за флейм
Ring0Sn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заменить стандартный вид ползунка (thumb) в компоненте TTackBar своим собственным? SkAndrew Общие вопросы Delphi 2 11.08.2008 16:26
Замена по маске Drain Общие вопросы Delphi 1 14.02.2008 16:08
Нахождение Стандартного отклонения enigma Microsoft Office Excel 1 06.02.2008 16:12
Как можно в файл (со своим расширением) записать любые файлы (например, звуковые)? andrey4623 Общие вопросы Delphi 3 12.01.2008 09:59
Как бы над своим компом поиздеваться Катюхо Свободное общение 23 29.12.2007 09:11