如何在Windows中始终显示程序托盘图标*默认*?

时间:2009-05-24 22:22:52

标签: windows-7 icons tray

如果在Windows 7中首次执行某个程序,它会自动隐藏该图标。是否有任何清单设置或选项强制Windows 7默认始终显示图标?

4 个答案:

答案 0 :(得分:14)

在.NET Rocks播客中,不久前,微软的凯特格雷戈里说这是不可能的。

她说:“如果用户想要它(托盘图标),他/她会把它放在那里”。 原因是为了防止托盘区域混乱。

答案 1 :(得分:4)

如果你真的想要显示你的托盘图标,你可以用最少的文字弹出一个气球,然后再按照代码示例隐藏气球和它的阴影:

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秒),你的trayicon将留在那里,因为Explorer.exe认为,有一个气球打开显示给用户。一些小问题 - 例如没有直接右键单击图标 - 仍然存在。

我真的习惯于显示我们公司软件的托盘图标,用户不打算手动执行此操作以及每次更新。所以这可能会对某人有所帮助...... :)

否则,我完全同意:这应该只在用户手中,而不是由应用程序控制。

答案 2 :(得分:2)

肯定不是&#34;不可能&#34;。有一个未记录的COM接口ITrayNotify,用于检索托盘图标并更改其可见性,由Explorer本身使用。完整的C ++源代码:http://thread0.me/tag/windows/

当然,使用非官方API 是有风险的,Windows 8已经对此API进行了重大更改,这意味着您必须对XP使用2个不同的定义 - Win7和Win8 - Win10。但是,嘿,即使Chrome uses this trick。务必妥善处理失败。

答案 3 :(得分:1)

question marked as duplicate答案是如何完成的。

  

Here's a linkalternate link)解释了如何和here's C# code

相关问题