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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2011, 10:52   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
Вопрос Программа не даёт выключить компьютер

Когда моя программа запущена, то при выполнении Пуск - Выключение - Выключение компьютер не может выключиться. Что такого может быть в программе, что она не позволяет выключить компьютер?
В программе есть возможность включения/отключения автозапуска, закрытие в системный трей (TСooltrayicon) и работа с DLL, где DLL подключается динамически.
Shouldercannon вне форума Ответить с цитированием
Старый 22.08.2011, 11:03   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Посмотреть что в OnClose, OnCloseQuery форм, возможно dll не освобождена (не уверен что это влияет)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.08.2011, 11:12   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

проверь
Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
чему равен CanClose?
ZuBy вне форума Ответить с цитированием
Старый 22.08.2011, 11:12   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,893
По умолчанию

Нашёл ошибку сам.
Код:
procedure TFormMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := (SessionEnding);

  if not CanClose then
  begin
    CoolTrayIcon1.HideMainForm;
    CoolTrayIcon1.IconVisible := True;
    PopupMainMenu.Items[0].Caption := ShowProgram;
  end;
end;
Я забыл про
Код:
procedure TMainForm.WMQueryEndSession(var Message: TMessage);
{ This method is a hack. It intercepts the WM_QUERYENDSESSION message.
  This way we can decide if we want to ignore the "Close to tray" option.
  Otherwise, when selected, the option would make Windows unable to shut down. }
begin
  SessionEnding := True;
  Message.Result := 1;
end;
Shouldercannon вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно выключить компьютер Windows iukash Общие вопросы C/C++ 9 23.11.2011 09:07
Выключить удаленный компьютер _SERGEYX_ Работа с сетью в Delphi 1 23.12.2008 10:09
Можно ли мгновенно выключить компьютер? The_Darkness Win Api 59 17.07.2008 00:15
как выключить/перезагрузить компьютер motaro Паскаль, Turbo Pascal, PascalABC.NET 1 28.03.2008 02:01