ОС не выключается, но мое приложение - PullRequest
3 голосов
/ 15 января 2010

У меня есть приложение, которое, когда я закрываю Windows, выходит изящно и быстро (проверено также в Диспетчере задач и Обозревателе процессов - процесс больше не существует), но ОС этого не делает. Похоже, ОС просто игнорирует выключение.

Но если я попытаюсь еще раз закрыть Windows, теперь все в порядке. Система выключается очень нормально.

  1. Почему?
  2. Как я могу это исправить?

Подробная информация о моем приложении:

  • многопоточный
  • имеет иконку в трее
  • не не выполняет какой-либо специальной обработки сообщений ОС WM_QUERYENDSESSION (или аналогичных)
  • не имеет специального драйвера, DLL-хука и т. Д.

Есть идеи как это исправить?

PS: Я в вашем распоряжении и дополнительные детали по запросу

Ответы [ 3 ]

1 голос
/ 27 января 2010

Странная, но почти та же самая проблема нас беспокоила на этой неделе .

Приложение запустилось в трее, закрылось, но не позволило закрыть окна. Поэтому, побывав там, я поделюсь с вами тем, что решило проблему для нас.

  • Удаление модуля данных решило проблему.
  • Удаление компонента NMsmtp устранило проблему.
  • Реализация предложения, данного в в этом отчете об ошибке исправила проблему на моей рабочей станции, но не на другой.

В итоге мы решили просто удалить компонент NMsmtp, для которого у нас не было исходного кода, и мы перешли на использование Indy.

Скорее всего, ваша ситуация будет отличаться, поэтому я предлагаю вам поступить так, как мы, и начать отбирать все из вашего проекта, пока он не заработает.

1 голос
/ 15 января 2010

Действительно ли вы возвращаете TRUE для сообщений ОС WM_QUERYENDSESSION (или аналогичных)? Вы можете получить сообщение, закрыть приложение и вернуть FALSE.

0 голосов
/ 15 января 2010

Если приложение все еще работает в фоновом режиме, это может помешать завершению работы Windows.

Вы можете проверить, включены ли параметры AutoEndTasks, и если нет, то:http://technet.microsoft.com/en-us/library/cc978604.aspx

С наилучшими пожеланиями

...