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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2016, 11:12   #1
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию Выход из программы при завершении работы windows

Есть программа на Delphi XE. При старте программа сворачивается в трей (используется встроенный компонент TrayIcon). Как сделать чтобы при завершении работы Windows или при выходе из системы программа перехватывала эти события и выключалась? Если возможно нужны примеры кода.

Код сворачивания в трей:
Код:
 DM.TrayIcon1.Visible := True;
  DM.TrayIcon1.Hint := 'Журнал заявок';
  // Убираем с панели задач
  ShowWindow(Handle, SW_HIDE); // Скрываем программу
  ShowWindow(Application.Handle, SW_HIDE); // Скрываем кнопку с TaskBar'а
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
    GetWindowLong(Application.Handle, GWL_EXSTYLE) or (not WS_EX_APPWINDOW));
Пробовал делать вот так, но не работает:

Код:
 procedure WMQueryEndSession(var Message: TWMQueryEndSession);
      message WM_QUERYENDSESSION;
Код:
procedure TForm6.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
  lCanClose := True;
  inherited;
end;
Код:
procedure TForm6.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := lCanClose;
  if CanClose then
  begin
    DM.TrayIcon1.Visible := false;
    Application.Terminate;
  end;
end;
Ericnex вне форума Ответить с цитированием
Старый 23.12.2016, 14:29   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так:
Код:
procedure TForm6.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
  Close;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.12.2016, 21:11   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Пример на Delphi XE 10.1 Berlin
Вложения
Тип файла: zip WinOut.zip (913.4 Кб, 7 просмотров)

Последний раз редактировалось Shouldercannon; 23.12.2016 в 21:29.
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вернуть старое разрешение экрана при критическом завершении программы? Asker13 Общие вопросы Delphi 4 11.05.2011 20:05
выполнение js кода при завершении программы на delphi xamel87 Общие вопросы Delphi 1 08.05.2011 18:45
Server2008(x64) не может закрыть моё приложение при завершении работы системы, но убивается через ДЗ Человек_Борща Общие вопросы Delphi 6 02.03.2011 17:20
Запуск exe/dll при завершении работы windows 7 AdoL Windows 1 24.12.2010 10:21
Ошибка при завершении программы _-Re@l-_ Общие вопросы Delphi 2 01.09.2010 21:32