![]() |
|
![]() ![]() ![]() |
|
OPlanet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.1.2009 Репутация: нет Всего: нет |
Задача такая: вешаю в реестр на RunOnce свою программу. При перезагрузке компьютера она исправно запускается. Мне надо, чтобы включался таймер после того, как на экране исчезнет заставка Windows и появятся иконки и кнопка Пуск. На деле же, моя программа запускается раньше этого события, и таймер к моменту появления пуска уже считает...
Пытался сделать так в OnPaint основной формы: while(FindWindow("Shell_TrayWnd",0)==NULL) Sleep(500); Timer1->Enabled=true; Но проблема - в том, что появляется пустой десктоп и ... ждет, пока отработает моя программа, а она ждет, пока появится Shell_TrayWnd... Так они и ждут друг-друга :( Можно как-то победить? Чтобы моя прога, запускаясь из RunOnce, не подвешивала другие процессы? Пытался кинуть проверку в таймер, типа: if(FindWindow("Shell_TrayWnd",0)==NULL) return; - не помогло. Помогите, кто знает, пожалуйста! Прям вся работа встала... :( |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 2 Всего: 16 |
Думаю стоить проверять процесс explorer.exe
Это сообщение отредактировал(а) A5uKa - 15.5.2009, 13:16 |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
Или запускать прогу вместе с ним. Подумать над этим можно здесь.
ps. Если вы хотели использовать RunOnce, то следует позаботиться об удалении ключа в ветке, которую я указал. -------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
Возможно это бред, но что если попробовать получить HDC раб. стола?
Хотя, может доступ к раб. столу появляется раньше... Это сообщение отредактировал(а) artsb - 15.5.2009, 18:23 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
OPlanet |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 5.1.2009 Репутация: нет Всего: нет |
Именно это и испробовал самым первым. Не помогло. Решение нашел такое: использую ключ Run вместо RunOnce (ибо Run - асинхронный, а RunOnce - нет). Таймер запускаю сразу. В нем ставлю: if(FindWindow("Shell_TrayWnd",0)==NULL) return; Все работает. Это сообщение отредактировал(а) OPlanet - 15.5.2009, 19:23 |
||||
|
|||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Klin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1938 Регистрация: 7.10.2002 Где: Краснодар Репутация: 20 Всего: 25 |
-------------------- Я человек - попробуйте обвинить меня за это. |
|||
|
||||
OlexXX |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.3.2006 Где: Россия Репутация: нет Всего: 1 |
Я ж написал, в обработчике таймера это. Там дальше - код, который должен отработать, когда появилось Shell_TrayWnd. Можно посмотреть, кстати, что получилось здесь: http://infostart.ru/projects/4135/ ;)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |