Прервите событие завершения работы Windows Vista в C#

Вы можете использовать правило с регулярным выражением, которое использует функцию группы сброса ветвей PCRE :

RewriteRule ^(?|([a-z]{2})|(?:([a-z]{2})/)?.*?([\w-]+))/?$ index.php?a=$1&b=$2 [L,QSA]

Демонстрация RegEx

У меня есть проверено в моем Apache, и это работает довольно хорошо. Обязательно прокомментируйте все остальные правила при тестировании.

7
задан HAdes 29 September 2008 в 13:52
поделиться

5 ответов

Можно использовать объект приложения WPF и подписаться на его событие SessionEnding. Можно затем посмотреть на SessionEndingCancelEventArgs. Перечисление ReasonSessionEnding для определения точно, почему сессия заканчивается (LogOff или Завершение работы).

6
ответ дан 6 December 2019 в 23:16
поделиться

То, на что можно хотеть посмотреть, здесь - Изменения Завершения работы Приложения в Windows Vista. В основном, поскольку, что Вы хотите, все это вращается вокруг WM_QUERYENDSESSION.

Обратите внимание, что это выставляется в платформе .NET - вместо этого необходимо будет использовать собственные функции (p/invoke) и сцепить wndproc в коде для ответа на сообщение окон.

Для примера (показывая причину не завершить работу), Вы видите Windows Vista - ShutdownBlockReasonCreate в C#.

5
ответ дан 6 December 2019 в 23:16
поделиться

События SessionEnding / SessionEnded на Microsoft. Win32. SystemEvents мог бы быть тем, что Вы ищете.

0
ответ дан 6 December 2019 в 23:16
поделиться

Используйте событие

Приложение. SessionEnding для WPF.

0
ответ дан 6 December 2019 в 23:16
поделиться
System.Environment.HasShutdownStarted
0
ответ дан 6 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

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