Compartir a través de


Activación de notificaciones del sistema desde aplicaciones de escritorio

Las aplicaciones Win32 empaquetadas y desempaquetadas pueden enviar notificaciones del sistema interactivas como las aplicaciones para UWP. Esto incluye aplicaciones empaquetadas (consulte Creación de un nuevo proyecto para una aplicación de escritorio WinUI 3 empaquetada), aplicaciones empaquetadas con ubicación externa (consulte Concesión de 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, enumeramos las opciones que tienes para enviar una notificación del sistema en Windows 10. Todas las opciones son totalmente compatibles...

  • Conservar en el Centro de actividades
  • Ser activable desde el elemento emergente y dentro del Centro de actividades
  • Ser activable 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 tenga miedo del "activador COM"; tenemos una biblioteca para aplicaciones de C# y C++ que hacen que esto 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 ✔️ ✔️
Protocolo ToastGeneric ✔️ ✔️
Plantillas heredadas ✔️

Nota:

Si agrega el activador COM a la aplicación empaquetada existente, las activaciones de notificación 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: no COM/Stub CLSID

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

Objetos visuales Acciones Entradas Activa en proceso
✔️ ✔️

Con esta opción, si admite 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 ✔️
Protocolo ToastGeneric ✔️ ✔️
Plantillas heredadas ✔️

En el caso de las aplicaciones empaquetadas, solo tiene que enviar notificaciones del sistema como lo haría 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 del sistema active tu propia aplicación.

Recursos