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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странно но факт, Из за приложения не вырубается винда... 
:(
    Опции темы
THenry
Дата 13.11.2005, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Суть проблемы в следующем:

Моё приложение имеет несколько форм и висит в трее, главная форма служит как бы контейнером для компонент (иконка в трее, меню для иконки таймера и т.д.) и форма эта невидимая. Выход приложения осуществляется через popup menu и только так.

А теперь собственно говоря проблемма:
Когда я хочу выключить винду все другие запушенные приложения закрываются, а моё нет и винда как следствие не вырубается

Такое событие в дебагере отследить не представляю даже как (тока если из какого нить другого приложения посылать моему WM_CLOSE) но я пошел другим путем и расставил в событии onClose диалоговые сообщения чтоб отследить что выполнятеся а что нет.

Получил вывод: Винда либо не шлет WM_CLOSE моему приложению либо оно не доходит.
Может кто что подскажет?

PM MAIL   Вверх
Poseidon
Дата 13.11.2005, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Цитата(THenry @ 13.11.2005, 14:04)
Винда либо не шлет WM_CLOSE моему приложению либо оно не доходит.
При завершении работы Винда и не шлет WM_CLOSE. При выключении вначале рассылается WM_QUERYENDSESSION. И если хоть одно приложение вернуло 0 на это сообщение, то рассылается WM_ENDSESSION. В общем отлавливай WM_QUERYENDSESSION и делай Application.Terminate Должно пройти.



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


Шустрый
*


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

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



THenry Был у меня такой прикол . Я тогда в OnCloseQuery писал CanClose := false и это не давало вырубить камп , и тогда я прописал в OnClose Abort(); И всё заработало smile smile smile

Если не поможет то покажи как ты там делаеш !!! smile
PM MAIL   Вверх
THenry
Дата 13.11.2005, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Slayers РАзговор не идет о том что написано в onClose. Я говорю о том что при попытке выключить винду до этого самого onClose дело то и не доходит (Я просто вставил первой сторокой MessageDlg, при выходе в ручную всё нормально т.е. появляется сообщение выполняются все необходимые действия, а когда я нажимаю на кнопочку Power чтоб выключить винду то тишина) Вот об этом я и говорю. Естественно onCloseQuery тоже не выполняется (это на тот случай если будет предложение типа CanClose:=true)

Цитата(Poseidon)
В общем отлавливай WM_QUERYENDSESSION и делай Application.Terminate Должно пройти.
А подробней? Где отлавливать?
PM MAIL   Вверх
Albinos_x
Дата 13.11.2005, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


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

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



ну написал же ты, что у тебя есть формы, у формы есть событие OnCloseQuery - оно и ловит это сообщение... и вернуть оно должно CanClose:=true или винда не выключится...


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


Delphi developer
****


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

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



Цитата(THenry @ 13.11.2005, 17:53)
А подробней? Где отлавливать?
Процедуру "отлова" мы должны описать в классе того окна, которое будет принимать данное сообщение т.е. формы. Примерно так:

Код
type
  TForm1 = class(TForm)
  private
    { Private declarations }
      procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession; 
  public
    { Public declarations }
  end;

Implementation 

procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession); 
begin 
ShowMessage('Windows mast die');
Msg.Result := 1; 
end;


Для реализации твоей задачи нужно сделать что-то вроде:

Код
type
  TForm1 = class(TForm)
  private
    { Private declarations }
      procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession; 
  public
    { Public declarations }
  end;

Implementation 

procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession); 
begin 
Application.Terminate;
Msg.Result := 1; // главное что бы не 0
end;




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


Новичок



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

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



Только сейчас руки дошли до делфи, сел попробовал то что посоветовал
Poseidon отчасти помогло, но только от части. Теперь приложение завершает свою работу, а винда все равно не выключается smile
PM MAIL   Вверх
Poseidon
Дата 19.11.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Цитата(THenry @ 19.11.2005, 14:46)
а винда все равно не выключается
Т.е? Что пишет, что происходит?



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


Новичок



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

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



Ничего не пишет и ничего не происходит. Просто приложение завершает свою работу и всё
PM MAIL   Вверх
Poseidon
Дата 19.11.2005, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Цитата(THenry @ 19.11.2005, 14:46)
а винда все равно не выключается

smile smile smile


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


Новичок



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

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



И что значат эти смайлики? Почему не выключается? Ну так вот за этим я и создал тему чтоб разобраться с аномалией по выключению
PM MAIL   Вверх
Poseidon
Дата 19.11.2005, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Ё..... smile
Что значит "винда все равно не выключается"? Что при этом происходит (с Виндой а не прогой), какие сообщения появляются (Виндовые а не проги). Что вообще творится?


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


Новичок



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

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



Объясняю еще раз повторяя свои же цитаты:

Цитата(THenry)
Ничего не пишет и ничего не происходит
это я говорил о винде.

Что еще тут добавить?

А теперь во избежание вопросов рассказываю процесс:
1. Нажимаю кнопку Power(или через меню пуск, что не важно), жду..
2. Итог: Все приложения закрываются, никаких сообщений не вылетает ничего нестандартного не происходит(винда продолжает работать)
3. Запускаю "Диспетчер задач" чистейщая винда (как будто только что поставил smile)




PM MAIL   Вверх
Poseidon
Дата 19.11.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


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

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



Это у тебя так происходит только тогда, кагда ты запускаешь сваю прогу и потом пытаешься выйтииз Винды или всегда так происходит?


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


Новичок



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

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



Да, всмысле, только при запущенном моем приложении.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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