Обнаружьте выход из системы окон в Python

Вы можете использовать любой из двух подходов:

##[^#\s]+\b
##\w+(?:\.\w+)*

См. regex demo # 1 и regex demo # 2 .

Подробности

  • ## - соответствует ## подстрока
  • [^#\s]+\b - любые 1+ символов, кроме # и пробелов, как можно больше, но должно останавливаться на самой правой границе слова
  • \w+(?:\.\w+)* - соответствует 1+ букв / цифр / подчеркиваний, а затем любой 0 или более последовательностей . и 1+ букв / цифр / подчеркиваний .

5
задан efotinis 15 December 2008 в 13:03
поделиться

2 ответа

Можно обнаружить события быстрого переключения между пользователями с помощью Служб удаленных рабочих столов API, к которому можно получить доступ из Python с помощью win32ts модуль от pywin32. В приложении GUI назовите WTSRegisterSessionNotification для получения уведомлений, WTSUnRegisterSessionNotification, чтобы прекратить получить уведомления и обрабатывать WM_WTSSESSION_CHANGE обменивайтесь сообщениями в своей оконной процедуре.

Если Вы пишете службу Windows в Python, используйте RegisterServiceCtrlHandlerEx функция для обнаружения событий быстрого переключения между пользователями. Это доступно в pywin32 библиотеке как RegisterServiceCtrlHandler функция в servicemanager модуль. В Вашей функции-обработчике ищите SERVICE_CONTROL_SESSIONCHANGE уведомление. См. также WM_WTSSESSION_CHANGE документация для деталей определенных кодов уведомления.

Существует еще некоторая деталь в этом потоке из списка рассылки python-win32, который может быть полезным.

Я надеюсь, что это помогает!

6
ответ дан 14 December 2019 в 01:19
поделиться

В консольном приложении можно использовать win32api. SetConsoleCtrlHandler и ищут CTRL_LOGOFF_EVENT. В приложении GUI Вы нуждаетесь в открытом окне и ожидаете сообщения WM_QUERYENDSESSION. Как точно, который работает (и если это работает вообще) зависит от Вашей библиотеки GUI.

3
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

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