Получите событие Выхода от системы

Переупорядочение элементов списка с помощью интерфейса перетаскивания, используемого большим количеством людей (популярное приложение для пар), Avocado, использует вариант меню гамбургера (четыре строки вместо трех):

Демо

enter image description here

7
задан Dave Clemmer 2 August 2011 в 03:41
поделиться

3 ответа

В классе Environment есть свойство, которое сообщает, начался ли процесс выключения:

Environment.HasShutDownStarted

Но после некоторого поиска в Google я обнаружил, что это может быть вам полезно :

 using Microsoft.Win32;

 //during init of your application bind to this event  
 SystemEvents.SessionEnding += 
            new SessionEndingEventHandler(SystemEvents_SessionEnding);

 void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
 {
     if (Environment.HasShutdownStarted)
     {
         //Tackle Shutdown
     }
     else
     {
         //Tackle log off
     }
  }

Но если вы хотите очистить только временный файл, я думаю, что различие между завершением работы и выходом из системы не имеет для вас никакого значения.

9
ответ дан 6 December 2019 в 11:52
поделиться

Если вам конкретно нужно событие выхода из системы, вы можете изменить код, указанный в ответе TheVillageIdiot, следующим образом:

using Microsoft.Win32;

//during init of your application bind to this event   
SystemEvents.SessionEnding += 
    new SessionEndingEventHandler(SystemEvents_SessionEnding);

void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) 
{     
    if (e.Reason == SessionEndReasons.Logoff) 
    {  
        // insert your code here
    }
}
8
ответ дан 6 December 2019 в 11:52
поделиться

Вы можете использовать WMI и смотреть Win32_ComputerShutdownEvent, где Type равен 0. Вы можете найти дополнительную информацию об этом событии здесь , а также больше об использовании WMI в .NET здесь .

0
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: