Если вы действительно хотите показать свой значок в трее, вы можете открыть всплывающую подсказку с минимальным текстом и сразу же спрятать всплывающую подсказку и ее тень, используя следующий код:
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
если вы повторите это (например, каждые 30 секунд), ваш лоток останется там, потому что Explorer.exe считает, что есть открытый воздушный шар для отображения пользователю. Несколько незначительных проблем - таких как отсутствие щелчка правой кнопкой мыши по значку - все еще там.
Я действительно имел обыкновение показывать иконку в трее для нашей компании-программного обеспечения, где пользователь не собирается делать это вручную и для каждого обновления. Так что, может быть, это кому-то поможет ...:)
В остальном я полностью согласен: это должно быть только в руках пользователя, а не под контролем приложения.