visual studio poner notificaciones icono form create cambiar aplicacion agregar c# .net vba windows-7 taskbar

c# - studio - ¿Cómo asocio mi aplicación con un programa anclado en la barra de tareas de Windows 7?



poner icono en visual studio 2017 (3)

1)
Esto es más bien una cuestión / problema arquitectónico, es un diseño un tanto inusual para tales propósitos.
es decir, si se requiere un actualizador (supongo que tiene más pero para comenzar con w / that) que generalmente se verifica dentro de la aplicación, entonces si se considera que la actualización inicia un proceso externo y actualiza la aplicación, etc.
El iniciador (como se describe) tendría sentido si está lanzando muchas cosas diferentes o si tiene una solución genérica o en casos más complejos, por ejemplo, tiene un ''proceso de host'' que carga dll-s, servicios, etc.
Básicamente, se está encontrando con problemas debido a un poco desafortunado diseño, decisión, a menos que tenga algo que lo justifique lo suficiente.
Pero habiendo dicho que no querías rediseñar ...
2)
Aún podría hacer un ''truco'' con el lanzador, y hacer una especie de trabajo simple ...

  • Ejecute primero el ''MyApp -argument: check'' (y haga que el ícono del escritorio pertenezca a él, no el lanzador), y tenga un argumento ''fork'' en el inicio y si ''check'' hace un pequeño código ''shim'' que introduzca el '' MyLauncher '',
  • haz que el iniciador haga lo que se supone que debe hacer; incluso puedes cerrar la aplicación principal MyApp después del lanzamiento,
  • cuando se ejecuta el iniciador, se inicia MyApp nuevamente (o más complejo para cerrar si se deja solo si se necesita una actualización, etc., pero el anterior es más sencillo), y usa algún otro argumento o no use ninguno (depende de lo que quieras, etc.) .),
  • Está realizando un proceso de doble redirección de una ordenación: inicie app => launcher => app nuevamente,
  • No deberías tener problemas con los iconos de esta manera,
  • con todo esto, debe tener cuidado de proporcionar manifiestos adecuados a cualquiera de las aplicaciones (la mayoría de las veces, el lanzador que necesita actualizar, más permisos) si se requiere un modo ''admin'', pero supongo que ya lo tiene,

eso podría funcionar, no lo he intentado, pero no veo por qué no debería hacerlo, y puede mantener la arquitectura existente en su lugar, etc.

Tenemos una aplicación, llamémosla MyApp . En la instalación, creamos un icono de escritorio para MyApp, que básicamente llama MyLauncher.exe /launch MyApp.exe . MyLauncher hace algunas cosas útiles (buscar actualizaciones, etc.), y luego inicia MyApp.

Un usuario con Windows 7 puede querer anclarlo en la barra de tareas (es decir, el botón derecho del mouse en el ícono del escritorio, "Fijar en la barra de tareas"):

Sin embargo, como el acceso directo apunta a MyLauncher, ocurre lo siguiente cuando el usuario inicia la aplicación (ya sea con el ícono del escritorio o el ícono de la barra de tareas): MyLauncher hace su trabajo y, luego, inicia MyApp. En la barra de tareas, el resultado es el siguiente:

Entiendo por qué sucede esto. Desde que MyLauncher inicia MyApp, la barra de tareas de Windows 7 los ve como dos aplicaciones diferentes.

Obviamente, mi pregunta es: como desarrollador de MyLauncher y MyApp, ¿puedo hacer algo al respecto? Me gustaría que la barra de tareas de Windows 7 "asocie" todas las instancias de MyApp.exe con el acceso directo que inicia MyLauncher.exe /lauch MyApp.exe .


Intente jugar con los "Id. De aplicaciones" Consulte aquí para obtener más información: http://msdn.microsoft.com/en-us/library/windows/desktop/dd378459(v=vs.85).aspx

"Las ID de modelo de usuario de la aplicación (AppUserModelIDs) son utilizadas ampliamente por la barra de tareas en Windows 7 y sistemas posteriores para asociar procesos, archivos y ventanas con una aplicación en particular. En algunos casos, es suficiente confiar en el AppUserModelID interno asignado a un proceso Sin embargo, una aplicación que posee múltiples procesos o una aplicación que se ejecuta en un proceso de host puede necesitar identificarse explícitamente para poder agrupar sus ventanas dispares en un solo botón de la barra de tareas y controlar el contenido de la aplicación. Lista . "


Una cosa que puedes hacer es no mostrar el ícono de la barra de tareas para la aplicación. En WPF es tan simple como una configuración de propiedad:

ShowInTaskbar="False"

El problema con este enfoque es que reducirá la facilidad de uso porque el usuario ya no puede saber cuándo se está ejecutando la aplicación o lo puede llevar fácilmente a la vanguardia cuando se pierde detrás de otras ventanas. Para aliviar algunas de estas preocupaciones, puede crear un icono de notificación para esta aplicación que habilitaría algunas de estas funciones y también brindaría al usuario algunos comentarios sobre el estado actual de la aplicación. (Corriendo, no corriendo, etc.)

Este recurso msdn tiene un buen ejemplo de código sobre cómo crear iconos de notificación en formularios de Windows. También puede utilizar el mismo método para las aplicaciones WPF.

CONSEJO PEQUEÑO: los íconos de notificación son 16x16 píxeles. Trate de encontrar una versión vectorial del ícono antes de cambiar el tamaño, ya que esto le dará resultados más precisos, ya que tiende a perder muchos detalles en ese tamaño.

Algunas interacciones del usuario con el icono de notificación pueden incluir:

  • Doble clic> Lleva la aplicación al frente
  • Clic derecho> Muestra un menú contextual con algunas opciones. (IE Traer al frente, cerrar, etc ...)
  • Mouse-Over> Muestra una información sobre herramientas con información sobre la aplicación.