Ativando notificações do sistema de aplicativos da área de trabalho

Os aplicativos Win32 empacotados e não empacotados podem enviar notificações do sistema interativas, assim como os aplicativos UWP. Isso inclui aplicativos empacotados (consulte Criar um novo projeto para um aplicativo de desktop WinUI 3 empacotado); aplicativos empacotados com localização externa (consulte Conceder o identificador de pacote por empacotamento com localização externa); e aplicativos não empacotados (consulte Criar um novo projeto para um aplicativo de desktop WinUI 3 não empacotado).

No entanto, para um aplicativo Win32 não empacotado, há algumas etapas especiais. Isso se deve aos diferentes esquemas de ativação e à falta de identidade do pacote em tempo de execução.

Neste tópico, listamos as opções que você tem para enviar uma notificação do sistema no Windows 10. Cada opção suporta totalmente...

  • Persistindo na Central de Ações
  • Ser ativável a partir do pop-up e dentro da Central de Ações
  • Ser ativável enquanto seu EXE não está em execução

Todas as opções

A tabela abaixo ilustra suas opções para dar suporte a notificações do sistema em seu aplicativo da área de trabalho e os recursos compatíveis correspondentes. Você pode usar a tabela para selecionar a melhor opção para seu cenário.

Opção Visuais Ações Entradas Ativa em processo
Ativador COM ✔️ ✔️ ✔️ ✔️
Sem CLSID COM / Stub ✔️ ✔️

Opção preferida - ativador COM

Essa é a opção preferencial que funciona para aplicativos da área de trabalho e dá suporte a todos os recursos de notificação. Não tenha medo do "ativador COM"; temos uma biblioteca para aplicativos C# e C++ que torna isso muito simples, mesmo que você nunca tenha escrito um servidor COM antes.

Visuais Ações Entradas Ativa em processo
✔️ ✔️ ✔️ ✔️

Com a opção ativador COM, você pode usar os seguintes modelos de notificação e tipos de ativação em seu aplicativo.

Modelo e tipo de ativação Empacotados Desempacotado
ToastGeneric em primeiro plano ✔️ ✔️
Plano de fundo genérico do Toast ✔️ ✔️
Protocolo ToastGeneric ✔️ ✔️
Modelos legados ✔️

Observação

Se você adicionar o ativador COM ao seu aplicativo empacotado existente, as ativações de notificação em primeiro plano/plano de fundo e herdado ativarão o ativador COM em vez da linha de comando.

Para saber como usar essa opção, consulte Enviar uma notificação do sistema local de aplicativos C# da área de trabalho ou Enviar uma notificação do sistema local de aplicativos Win32 C++ WRL.

Opção alternativa - Sem COM / Stub CLSID

Essa é uma opção alternativa se você não puder implementar um ativador COM. No entanto, você sacrificará alguns recursos, como suporte de entrada (caixas de texto em notificações do sistema) e ativação em processo.

Visuais Ações Entradas Ativa em processo
✔️ ✔️

Com essa opção, se você der suporte à área de trabalho, ficará muito mais limitado nos modelos de notificação e nos tipos de ativação que pode usar, conforme mostrado abaixo.

Modelo e tipo de ativação Empacotados Desempacotado
ToastGeneric em primeiro plano ✔️
Plano de fundo genérico do Toast ✔️
Protocolo ToastGeneric ✔️ ✔️
Modelos legados ✔️

Para aplicativos empacotados, basta enviar notificações do sistema como um aplicativo UWP faria. Quando o usuário clicar na notificação do sistema, seu aplicativo será iniciado na linha de comando com os argumentos de inicialização especificados na notificação do sistema.

Para aplicativos não empacotados, configure a AUMID para que você possa enviar notificações do sistema e, em seguida, especifique também um CLSID no atalho. Isso pode ser qualquer GUID aleatório. Não adicione o servidor/ativador COM. Você está adicionando um CLSID COM de "stub", o que fará com que a Central de Ações persista a notificação. Observe que você pode usar apenas notificações do sistema de ativação de protocolo, pois o CLSID de stub interromperá a ativação de qualquer outra ativação de notificação do sistema. Portanto, você precisa atualizar seu aplicativo para dar suporte à ativação do protocolo e fazer com que o protocolo da notificação do sistema ative seu próprio aplicativo.

Recursos