Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

258
Vistas
Agregar notificación al centro de notificaciones de Windows sin mostrarlo en la pantalla

Estoy creando una aplicación Electron con una función de notificación personalizada en la que los divs html5 aparecen y desaparecen según sea necesario en una ventana transparente, sin marco y siempre visible.

Funciona muy bien, pero todavía me gusta el centro de notificaciones de Windows y me gustaría tener la opción de ver las notificaciones anteriores allí, sin mostrarlas en la pantalla con la API de HTML5.

Yo he tratado:

  • Buscando en la API de HTML5 una opción para no mostrar una notificación, o para ocultarla () de inmediato: no hubo suerte. El único método que se acerca es .close(), y también elimina la notificación del centro.
  • Mirando paquetes como node-notifier , pero ninguna de las dependencias de notificación utilizadas ofrece una forma de ocultar completamente una notificación.

Si bien mencioné Node, también aceptaré cualquier enlace/API de nivel inferior que me permita hacer esto.

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Con la ayuda de @treckstar en los comentarios, encontré una manera de hacer lo que quería usando:

  • NodoRT
  • El atributo ToastNotification.SuppressPopup

A pesar de algunos problemas para construir NodeRT y usar la reconstrucción de electrones, aquí hay un PoC funcional:

 const { XmlDocument } = require('@nodert-win10-rs4/windows.data.xml.dom'); const { ToastNotification, ToastNotificationManager } = require('@nodert-win10-rs4/windows.ui.notifications'); const localImage = path.join(__dirname, 'icon.png'); const template = ` <toast launch="app-defined-string"> <visual> <binding template="ToastGeneric"> <image id="1" placement="appLogoOverride" hint-crop="circle" src="${localImage}"/> </binding> </visual> </toast> `; const xml = new XmlDocument(); xml.loadXml(template); const toast = new ToastNotification(xml); const notifier = ToastNotificationManager.createToastNotifier("com.myapp.testnotif"); toast.suppressPopup = true; notifier.show(toast);

Que esto ayude a cualquiera que se encuentre con el mismo problema altamente específico.

over 4 years ago · Santiago Trujillo Denunciar

0

Además de lo que muestra @MadWard en la PoC, la tecla suppressPopup es realmente el actor principal de la solución.

Mientras revisaba toneladas de ejemplos y código de electrones, seguí enfrentándome a obstáculos debido a versiones aleatorias de SDK y bibliotecas de cosas que había instalado. Por ejemplo, el paquete electron-windows-notifications , que usa NodeRT, no pudo cargar mi preload.js porque el SDK de Windows 10 que había instalado (compilación 15063) necesitaba nodert-win10-cu en lugar de lo que se usaba en la mayoría de las soluciones por predeterminado nodert-wind10-au .

SDK Conocido como Versión de Windows Alcance npm
Windows 10, compilación 17134 Actualización de abril de 2018 (Redstone 4) 1803 npmjs.com/org/nodert-win10-rs4
Windows 10, compilación 16299 Actualización de Fall Creators (Redstone 3) 1709 npmjs.com/org/nodert-win10-rs3
Windows 10, compilación 15063 Actualización de creadores (Redstone 2) 1703 npmjs.com/org/nodert-win10-cu
Windows 10, compilación 14393 Actualización de aniversario (Redstone 1) 1607 npmjs.com/org/nodert-win10-au
Windows 10, compilación 10586 Umbral 2 1511 npmjs.com/~nodert-win10

EDITAR: Olvidé incluir los pasos más específicos que tomé para obtener archivos de dependencia electron-windows-notifications en este problema de GitHub aquí. Básicamente todo, desde Python , node-gyp gyp roto y archivos .winmd faltantes.

Por último, Electron 14+ y NodeRT tienen un problema en el que deberá asegurarse de tener app.allowRendererProcessReuse = false y, como dice el archivo Léame, para asegurarse de que se esté ejecutando en el archivo main.js

Espero que esto ayude a alguien en el camino, ya que nunca antes había usado Electron hasta hoy y había aprendido mucho gracias a la ayuda de otras personas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda