Como sempre mostrar ícones na bandeja do programa em Windows * padrão *?
Pergunta
Se um programa é executado pela primeira vez no Windows 7, ele esconde automaticamente o ícone. Existe alguma configuração manifesto ou opção para forçar o Windows 7 para mostrar sempre o ícone por padrão?
Solução
Em .NET Rochas podcast, não muito tempo atrás, Kate Gregory da Microsoft estava dizendo que é impossível.
Ela disse algo como: "Se o usuário quer que ele (bandeja ícone) ele / ela vai colocá-lo lá". Razão para isso é para evitar confusão na área da bandeja.
Outras dicas
Se você realmente quer mostrar o seu bandeja-ícone, pode aparecer um balão com texto mínimo e apenas depois esconder o balão e da sombra novamente seguindo o código-exemplo:
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
Se você repetir isso (por exemplo, a cada 30 segundos), o seu trayicon vai ficar lá porque explorer.exe pensa, não é um balão aberto para exibir para o usuário. Um menor algumas questões - tais como o direito-clique diretamente no ícone -. Ainda estão lá
Eu realmente usado para mostrar o ícone da bandeja para a nossa empresa-software onde o usuário não se destinam a fazer isso manualmente e para cada atualização. Então talvez isso ajude alguém ...:)
Caso contrário, eu concordo totalmente: Este deve ser apenas em mãos do usuário, não controlado pelo aplicativo
. É certamente não "impossível". Há uma ITrayNotify
interface COM não documentada para recuperar ícones da bandeja e alterar a sua visibilidade, usado por si só Explorer. Completa C ++ fonte aqui: http://thread0.me/tag/windows/
Claro, usando uma API não oficial é arriscado e Windows 8 tem intoduced alterações significativas a esta API, o que significa que você tem que usar 2 definições diferentes para o XP - Win7 e Win8 - Win10. Mas hey, mesmo Chrome utiliza esta enganar . Apenas certifique-se de lidar com falhas corretamente.
A marcado como duplicado tem a resposta de como ele é feito.
Aqui está uma link ( alternativa ligação ) que explica como e aqui é código C # .