Como siempre mostrar iconos de la bandeja de programas en Windows por defecto * *?

StackOverflow https://stackoverflow.com/questions/904790

  •  05-09-2019
  •  | 
  •  

Pregunta

Si un programa se ejecuta por primera vez en Windows 7, se oculta automáticamente el icono. ¿Hay un manifiesto o una opción para forzar a Windows 7 para mostrar siempre el icono por defecto?

¿Fue útil?

Solución

En .NET Rocks podcast, no hace mucho tiempo, Kate Gregory de Microsoft estaba diciendo que es imposible.

Ella dijo algo así como: "Si el usuario quiere que (icono de la bandeja) él / ella será puesto ahí". La razón de esto es para evitar desorden en el área de la bandeja.

Otros consejos

Si realmente quiere mostrar su bandeja-icono, puede popup de un globo con un mínimo de texto y justo después ocultar el globo y es la sombra de nuevo siguiendo código ejemplo:

trayIcon.ShowBalloonTip(30000, "", ".", ToolTipIcon.None)

Dim balloonHandle As IntPtr = GetBalloonHwnd(balloonText) ' mainly: FindWindow("tooltips_class32", Nothing)

If (balloonHandle <> IntPtr.Zero) Then
  Dim sysShadowClassHwnd As IntPtr = FindWindow("SysShadow", Nothing)

  ' will hide balloon and leaving a small shadow artifact - just for this balloon
  PostMessage(balloonHandle, WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero)
  SetWindowPos(balloonHandle, IntPtr.Zero, 0, 0, 0, 0, SWP_HIDEWINDOW)

  If (sysShadowClassHwnd <> IntPtr.Zero) Then
    ' this will remove the small shadow artifact
    PostMessage(sysShadowClassHwnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero)
  End If
End If

Si repite este (por ejemplo, cada 30 segundos), el TrayIcon permanecerá allí porque Explorer.exe piensa, hay un globo abierta para mostrar al usuario. Unos pocos problemas menores - como derecho-clic directamente sobre el icono - todavía están allí

.

Realmente utiliza para mostrar el icono de la bandeja para nuestra compañía en software en el que el usuario no tienen la intención de hacerlo de forma manual y para cada actualización. Así que tal vez esto ayude a alguien ...:)

De lo contrario, estoy totalmente de acuerdo: Esto debería ser sólo en manos del usuario, no controlado por la aplicación

.

Desde luego no es "imposible". Hay una interfaz COM ITrayNotify indocumentado para recuperar iconos de la bandeja y cambiar su visibilidad, se utiliza por sí Explorer. Completa fuente de C ++ aquí: http://thread0.me/tag/windows/

Por supuesto, el uso de una API no oficial es arriesgada y Windows 8 ha instaurado romper cambios a esta API, lo que significa que tiene que utilizar 2 definiciones diferentes para XP - Win7 y Win8 - Win10. Pero bueno, incluso Chrome utiliza esta engañar. Sólo asegúrese de controlar los errores correctamente.

Una pregunta href="https://stackoverflow.com/questions/12550445/registry-setting-to-make-icon-always-show-in-the-windows-7-tray"> tiene la respuesta de cómo se hace.

  

Aquí hay un enlace ( alternativo enlace ) que explica cómo y aquí está el código C # .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top