Как программно изменить состояние фокусировки внимания?

Wu-Tang

Эксперт клуба THG
Сообщения
213
Реакции
54
Информация

Может сможешь мне еще помочь с парой моментов, выявились моменты в uttended настройке, где не срабатывает reg, bat и тд те нужен скрипт по типу этого *.js
В общем мне надо в шторке, значок фокусировка внимания сменить на только будильники
xum2ur5t.jpg

в реестре нашел ключ:
Код:
[HKEY_CURRENT_USER\Control Panel\Quick Actions\Control Center\QuickActionsStateCapture]
"GroupCount"=dword:00000003
"Flows"="Flows"
"Sliders"="Sliders"
"Toggles"="Toggles,Microsoft.QuickAction.Bluetooth:true,Microsoft.QuickAction.AllSettings:false,Microsoft.QuickAction.Project:false,Microsoft.QuickAction.QuietHours:true"
последний это 4 иконки, что на скрине, false или true их значение, так вот я применяю true, что должно быть при "только будильники", но оно сбрасывается в false.
 
Последнее редактирование модератором:
последний это 4 иконки, что на скрине, false или true их значение, так вот я применяю true, что должно быть при "только будильники", но оно сбрасывается в false.
Значит это кто-то делает и можно отследить кто, например через Process Monitor. Затем перед изменением этого ключа убивать виновный процесс.
Альтернативно, можно например как здесь, через недокументированную функцию ZwUpdateWnfStateData на основе работы Gabrielle Viala и Alex Ionescu. С небольшой модификацией в виде задержки, у меня исправно переключает в режим "Alarms only" на Windows 11. Попробуй, если программа из вложения у тебя исправно делает нужное (exe в папке bin/release).
 

Вложения

  • FocusAssistCS.rar
    10.9 KB · Просмотры: 2
Последнее редактирование:
Вот из вложения переключила в - только будильники, нормально.
Должны ли быть с ней рядом файлы .config и .pdb или они не нужны?

А вот что насчет второго варианта, те можно использовать скрипт отсюда - Toggling Focus Assist mode in Win 10 Programmatically но как модифицировать и зачем задержка.
 
Должны ли быть с ней рядом файлы .config и .pdb или они не нужны?
не нужны.
А вот что насчет второго варианта, те можно использовать скрипт отсюда - Toggling Focus Assist mode in Win 10 Programmatically но как модифицировать и зачем задержка.
Без задержки не всегда корректно отрабатывает. Сперва ставлю в состояние Off, затем после паузы в FullScreen (он же "будильники").
Но если у тебя и так все нормально отрабатывает, можешь попробовать вариант без задержки ниже.
 

Вложения

  • FocusAssistCS_NoDelay.rar
    7.7 KB · Просмотры: 1
удивительно, этот без задержки, самый первый раз переключил, а потом повторно стал проверять и уже не переключает, а который из второго поста переключает стабильно и повторно сколько угодно раз.
у тебя такого рода глюк тоже был замечен?
и вопрос, если остановиться на варианте с задержкой, то он в будильники переключает из разных же состояний, которое в данный момент установлено ведь?
 
хм, оказывается после ребута это состояние слетает в - фокусировка внимания, я полагал, что будет сохраняться пока не изменишь сам, мда.
раз заговорили про "шторку", мне ее "добить" надо, как можно скриптом очистить спискок уведомлений:
 
у тебя такого рода глюк тоже был замечен?
да, именно это.

и вопрос, если остановиться на варианте с задержкой, то он в будильники переключает из разных же состояний, которое в данный момент установлено ведь?
Официальной документации по данной функции нет. Подробное исследование сделали для конференции BlackHat 2018 Alex Ionescu и Gabrielle Viala на основе более ранних работ от red plait и его инструмента wincheck, вот в их слайдах кое-что есть про переключение состояния, которое переживёт перезагрузку:
Persistent names persist beyond process (registrar’s) exit while permanent names persist beyond reboot
В теории, можно сделать XOR этого имени (WNF_SHEL_QUIETHOURS_ACTIVE_PROFILE_CHANGED либо WNF_SHEL_QUIET_MOMENT_GAME_MODE_CHANGED (перечисление well-known списка тут)), выставить нужный флаг permanent и DataScope, сделать обратный XOR и скормить системе уведомление с таким новым именем.

Надо посидеть, почитать и поковыряться (желательно на изолированной машине, т.к. этот API опасен, чтобы так просто на продакш машине делать тесты)

Ссылки на инфу и инструменты (для себя):

В целом механизм WNF интересен и представляет из себя способ коммуникации между процессами и между user-kernel space в формате publisher/subscriber (появился, начиная с Windows 8).
Как будет больше свободного времени, ещё поковыряюсь.
 
@Wu-Tang, пока можешь почитать выше статью с хабра, там приведены ключи реестра, где располагаются состояния некоторых уведомлений. Может, тебе удастся изменить и сохранить настройки через них (с перезагрузкой).
 
Назад
Сверху Снизу