Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Windows 11 introduziu a funcionalidade de Concentração, que ajuda os utilizadores a minimizar distrações ao ativar o modo Não Perturbe e silenciando a cintilação de ícones e as notificações de emblema para aplicações na barra de tarefas. Este artigo mostra como usar a API do FocusSessionManager para detetar se uma sessão do Focus está ativa no momento ou receber atualizações quando o estado da sessão do Focus muda, permitindo que você personalize o comportamento do seu aplicativo para minimizar distrações quando uma sessão do Focus 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 do Focus
Antes de acessar as propriedades do FocusSessionManager, verifique se ele é suportado no dispositivo atual verificando a propriedade IsSupported . Depois de verificar se o recurso é suportado, você pode determinar se uma sessão Focus 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;
}
}
Monitore continuamente o estado do foco
Você pode se inscrever para ser notificado quando o estado da sessão Focus no dispositivo for alterado registrando-se para o evento IsFocusActiveChanged
- 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