Activación de notificaciones del sistema desde aplicaciones de escritorio

Las aplicaciones Win32 empaquetadas y desempaquetadas pueden enviar notificaciones del sistema interactivas igual que las aplicaciones para UWP. Esto incluye aplicaciones empaquetadas (consulte Creación de un nuevo proyecto para una aplicación de escritorio de WinUI 3 empaquetada); aplicaciones empaquetadas con ubicación externa (consulte Conceder identidad de paquete mediante el empaquetado con ubicación externa); y aplicaciones sin empaquetar (consulte Creación de un nuevo proyecto para una aplicación de escritorio winUI 3 sin empaquetar).

Sin embargo, para una aplicación Win32 sin empaquetar, hay algunos pasos especiales. Esto se debe a los distintos esquemas de activación y a la falta de identidad de paquete en tiempo de ejecución.

En este tema, se enumeran las opciones que tiene para enviar una notificación del sistema en Windows 10. Cada opción es totalmente compatible...

  • Conservación en el Centro de actividades
  • Se puede activar desde el elemento emergente y dentro del Centro de actividades
  • Se puede activar mientras su EXE no se está ejecutando

Todas las opciones

En la tabla siguiente se muestran las opciones para admitir notificaciones del sistema dentro de la aplicación de escritorio y las características admitidas correspondientes. Puede usar la tabla para seleccionar la mejor opción para su escenario.

Opción Objetos visuales Acciones Entradas Activa en proceso
Activador COM ✔️ ✔️ ✔️ ✔️
Sin CLSID com/Stub ✔️ ✔️

Opción preferida: activador COM

Esta es la opción preferida que funciona para las aplicaciones de escritorio y admite todas las características de notificación. No tengas miedo del "activador COM"; tenemos una biblioteca para aplicaciones de C# y C++ que hace que sea muy sencillo, incluso si nunca ha escrito un servidor COM antes.

Objetos visuales Acciones Entradas Activa en proceso
✔️ ✔️ ✔️ ✔️

Con la opción activador COM, puedes usar las siguientes plantillas de notificación y tipos de activación en la aplicación.

Tipo de plantilla y activación Empaquetado Sin empaquetar
Primer plano de ToastGeneric ✔️ ✔️
Fondo de ToastGeneric ✔️ ✔️
ToastGeneric Protocol ✔️ ✔️
Plantillas heredadas ✔️

Nota

Si agrega el activador COM a la aplicación empaquetada existente, las activaciones de notificaciones Foreground/Background y Legacy activarán el activador COM en lugar de la línea de comandos.

Para obtener información sobre cómo usar esta opción, consulta Enviar una notificación del sistema local desde aplicaciones de C# de escritorio o Enviar una notificación del sistema local desde aplicaciones WRL de C++ win32.

Opción alternativa: sin CLSID com/Stub

Esta es una opción alternativa si no se puede implementar un activador COM. Sin embargo, sacrificará algunas características, como la compatibilidad de entrada (cuadros de texto en las notificaciones del sistema) y la activación en proceso.

Objetos visuales Acciones Entradas Activa en proceso
✔️ ✔️

Con esta opción, si es compatible con el escritorio, está mucho más limitado en las plantillas de notificación y los tipos de activación que puede usar, como se muestra a continuación.

Tipo de plantilla y activación Empaquetado Sin empaquetar
Primer plano de ToastGeneric ✔️
Fondo de ToastGeneric ✔️
ToastGeneric Protocol ✔️ ✔️
Plantillas heredadas ✔️

En el caso de las aplicaciones empaquetadas, solo tiene que enviar notificaciones del sistema como una aplicación para UWP. Cuando el usuario hace clic en la notificación del sistema, la aplicación se iniciará con los argumentos de inicio que especificó en la notificación del sistema.

En el caso de las aplicaciones sin empaquetar, configure el AUMID para que pueda enviar notificaciones del sistema y, a continuación, especifique también un CLSID en el acceso directo. Puede ser cualquier GUID aleatorio. No agregue el servidor o activador COM. Va a agregar un CLSID COM de "código auxiliar", lo que hará que el Centro de actividades persista la notificación. Tenga en cuenta que solo puede usar notificaciones del sistema de activación del protocolo, ya que el CLSID de código auxiliar interrumpirá la activación de cualquier otra activación del sistema. Por lo tanto, tienes que actualizar la aplicación para admitir la activación del protocolo y hacer que el protocolo de la notificación del sistema active tu propia aplicación.

Recursos