Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Windows 11 introduziu o recurso Foco que ajuda os usuários a minimizar as distrações ativando o ícone Não Incomodar e silenciando notificações de ícones e selos para aplicativos na barra de tarefas. Este artigo mostra como usar a API FocusSessionManager para detectar se uma sessão de Foco está ativa no momento ou receber atualizações quando o estado da sessão Focus é alterado, permitindo que você personalize o comportamento do aplicativo para minimizar distrações quando uma sessão de Foco estiver ativa. Para obter mais informações sobre o recurso Foco, consulte Como usar o foco no Windows 11.
Obter o estado atual da sessão de Foco
Antes de acessar as propriedades do FocusSessionManager, verifique se ele é compatível com o dispositivo atual conferindo a propriedade IsSupported. Depois de verificar se o recurso tem suporte, você pode determinar se uma sessão de Foco está ativa no momento verificando a propriedade IsFocusActive .
- C#
- C++/WinRT
private void UpdateStatusBar(string message)
{
var focusActive = false;
if (Windows.UI.Shell.FocusSessionManager.IsSupported)
{
var manager = Windows.UI.Shell.FocusSessionManager.GetDefault();
focusActive = manager.IsFocusActive;
}
if (!focusActive)
{
statusTextBlock.Text = message;
}
}
Monitorar continuamente o estado de foco
Você pode se inscrever para ser notificado quando o estado da sessão Focus no dispositivo mudar, registrando-se no evento IsFocusActiveChanged. No exemplo a seguir , SetAnimatedGifAutoPlay é um método auxiliar implementado pelo aplicativo que altera se o aplicativo reproduz gifs animados automaticamente com base no estado atual da sessão focus.
- C#
- C++/WinRT
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (Windows.UI.Shell.FocusSessionManager.IsSupported)
{
var manager = Windows.UI.Shell.FocusSessionManager.GetDefault();
manager.IsFocusActiveChanged += Manager_IsFocusActiveChanged;
SetAnimatedGifAutoPlay(true);
}
}
private void Manager_IsFocusActiveChanged(Windows.UI.Shell.FocusSessionManager sender, object args)
{
if(sender.IsFocusActive)
{
SetAnimatedGifAutoPlay(true);
}
else
{
SetAnimatedGifAutoPlay(false);
}
}
Windows developer