Вы можете использовать любой из двух подходов:
##[^#\s]+\b
##\w+(?:\.\w+)*
См. regex demo # 1 и regex demo # 2 .
Подробности
##
- соответствует ##
подстрока [^#\s]+\b
- любые 1+ символов, кроме #
и пробелов, как можно больше, но должно останавливаться на самой правой границе слова \w+(?:\.\w+)*
- соответствует 1+ букв / цифр / подчеркиваний, а затем любой 0 или более последовательностей .
и 1+ букв / цифр / подчеркиваний . Можно обнаружить события быстрого переключения между пользователями с помощью Служб удаленных рабочих столов API, к которому можно получить доступ из Python с помощью win32ts
модуль от pywin32. В приложении GUI назовите WTSRegisterSessionNotification для получения уведомлений, WTSUnRegisterSessionNotification, чтобы прекратить получить уведомления и обрабатывать WM_WTSSESSION_CHANGE
обменивайтесь сообщениями в своей оконной процедуре.
Если Вы пишете службу Windows в Python, используйте RegisterServiceCtrlHandlerEx
функция для обнаружения событий быстрого переключения между пользователями. Это доступно в pywin32 библиотеке как RegisterServiceCtrlHandler
функция в servicemanager
модуль. В Вашей функции-обработчике ищите SERVICE_CONTROL_SESSIONCHANGE
уведомление. См. также WM_WTSSESSION_CHANGE
документация для деталей определенных кодов уведомления.
Существует еще некоторая деталь в этом потоке из списка рассылки python-win32, который может быть полезным.
Я надеюсь, что это помогает!
В консольном приложении можно использовать win32api. SetConsoleCtrlHandler и ищут CTRL_LOGOFF_EVENT. В приложении GUI Вы нуждаетесь в открытом окне и ожидаете сообщения WM_QUERYENDSESSION. Как точно, который работает (и если это работает вообще) зависит от Вашей библиотеки GUI.