Как я могу выполнить функцию при выключении Windows - PullRequest
1 голос
/ 04 ноября 2010

Как выполнить функцию при завершении работы Windows.Вот мой сценарий, я монтирую диск с помощью функции WNetAddConnection2 в моем приложении.Теперь я хочу, чтобы пользователь установил опцию, будет ли диск монтироваться при следующем запуске системы или нет.

Если он выбирает, чтобы не монтировать при следующем запуске, тогда мне нужно удалить диск, используя WNetCancelConnection2 , но это должно происходить только при отключении системы пользователем.

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

Есть ли другие способы его использования?

Ответы [ 4 ]

2 голосов
/ 04 ноября 2010

Если у вас есть главное окно (даже невидимое), которое может обрабатывать сообщения, вы можете обработать сообщение WM_ENDSESSION.

См .: http://msdn.microsoft.com/en-us/library/aa376889(v=VS.85).aspx

1 голос
/ 04 ноября 2010

Если вы можете превратить ваше приложение в службу Windows (или сделать так, чтобы ваше приложение сообщало состояние с той, которую вы предоставляете), вы можете выполнить необходимые действия при получении SERVICE_CONTROL_SHUTDOWN в вашей функции управления службами .Это отсоединит ваше приложение, которое обрабатывает взаимодействие с пользователем, от обработки завершения работы, которая требует, чтобы что-то было запущено все время (что, если пользователь выходит из системы?).

0 голосов
/ 04 ноября 2010

Я могу думать так:

  1. Зарегистрируйте вашу программу для автоматического запуска (при запуске ПК). Вот учебник о том, как это сделать.
  2. Сохраните пользовательский параметр (как упомянуто выше) в хранилище или реестре (если вы знаете, как). Когда ваше приложение запустится, вы можете прочитать реестр и действовать соответствующим образом.
  3. Для завершения работы ваше приложение должно подключиться к SystemEvent, чтобы обнаружить завершение работы (тогда вы можете действовать соответственно). Вот пример того, как (C #). Для C ++ вы можете прослушать сообщение WM_ENDSESSION .

Я надеюсь, что мои 2 цента могут вам помочь.

0 голосов
/ 04 ноября 2010

explorer.exe - это процесс графического интерфейса Windows, который обычно отключается только при закрытии Windows (исключения должны быть сделаны для определенных условий ошибки). Вы можете прослушать сообщение окна WM_DESTROY для идентификатора процесса explorer.exe и затем отключиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...