【问题标题】:stop auto hiding tray notification icon停止自动隐藏托盘通知图标
【发布时间】:2013-02-15 10:22:06
【问题描述】:

每当我的 Windows 窗体应用程序第一次运行时,托盘图标保持可见大约不到一分钟,然后它会自动隐藏,我该怎么做才能让它粘住而不是自动隐藏?

我尝试搜索,但找不到任何有用的信息。

这似乎是 Windows 7 及更高版本的默认行为,我想知道是否有办法从我的应用程序内部覆盖该行为?

【问题讨论】:

  • 不,没有办法以编程方式做到这一点。您可以单击系统托盘上的“自定义”并手动将其更改为始终显示。
  • @DiskJunky 是真的,但我希望 OP 不知道如何:P
  • 确保您还告诉您的用户,“该程序使用了不受支持的图标显示方式,因此它可能随时停止工作(即使是安全修补程序也可能会破坏它)。不要抱怨发生这种情况时向 Microsoft 投诉。向 Sharp12345 投诉。”
  • @DiskJunky 记录的 API 保持稳定,但未记录的部分不断变化。特别是,跟踪隐藏通知图标的内部数据结构在每个 Windows 版本中都会发生很大变化。
  • 我看不到让用户在软件的设置窗口/选项卡中设置“图标停留在托盘上”选项的方式烦人,如果它: 通过记录和支持的 API 调用执行。 / 在弹出窗口/气球帮助框/安装期间不使用非标准默认值询问。 / 可以像启用它一样轻松地禁用它。 - 对其他托盘图标没有影响。 - 在软件卸载时被禁用。在我看来,任何其他方式也是不可接受的。

标签: c# .net vb.net windows-7 notifyicon


【解决方案1】:

不支持以编程方式覆盖系统的默认显示/隐藏通知图标行为。 MSDN:

在 Windows 7 上将图标添加到通知区域时,默认添加到通知区域的溢出部分。此区域包含处于活动状态但在通知区域中不可见的通知区域图标。 只有用户可以将图标从溢出中提升到通知区域,尽管在​​某些情况下,系统可以将图标临时提升到通知区域作为短预览(不到一分钟)。

强调我的。

【讨论】:

  • 尽管有文档,但我不同意这一点。无论更新/读取这些设置有多容易,这些设置都必须存储在某个地方。我发现 MS 极不可能竭尽全力加密或以其他方式锁定这些相对微不足道的设置。可能没有api调用,但这并不意味着它“不可能”,只是很难
  • 哦,没问题,@DiskJunky。我只是说它不支持。鉴于此,如果您的软件发现并利用了该设置,那么当微软移动它时它就会崩溃。其中,自 Win8 以来,他们表现出更大的意愿。
  • @Michael,错了。你还是可以的,我已经做到了。它会破坏的唯一方法是如果微软移动了他们实际的注册键和结构,这不会发生。顺便说一句,我提供的解决方案在 Windows 8 中运行良好,就像在 7 和 Vista 中一样:)
  • @MrCoDeXeR:也许,也许不是。我认为你误解了我的回答。我是说没有 supported 方法可以做到这一点。你是说有一种 unsupported 方式。有与不受支持的路径相关的成本。如果 OP 和未来的用户对此表示满意,那就太好了。顺便说一句,一位微软员工,一个人脉广泛的员工,在上面评论了这篇文章。听听他对此的看法是值得的。
  • (是的,微软已经改变了他们操作系统的许多记录区域。我个人很痛苦。没有记录的区域?最好打赌他们会改变)
【解决方案2】:

毫无疑问,您已经阅读了 cmets 中的讨论,确实没有 支持 的方式来执行此操作。也就是说,如果您下定决心并且有时间进行一些挖掘,我建议您使用一些工具绕过文档并通过通知设置查看引擎盖下实际发生的情况。可能有相应的文档,但我没有找到它。

蛮力方法是使用 SysInternal 的 RegMon 工具来查看所有注册表访问。如果您将其与“Explorer.exe”进程相关联,您将看到有关桌面和开始栏正在做什么的所有相关信息,包括任何文件访问。毫无疑问 - 这是一种蛮力方法,需要大量的努力和挖掘。一旦绑定到 explorer.exe 进程,您就可以更改通知设置。查看和调查过程所做的更改将使您了解相关设置的存储位置以及存储方式。不利的一面是,将有大量数据需要搜索和调查以找出发生了什么,但这是可以做到的。这不是理想的解决方案,但如果没有其他解决方案,恐怕您将面临粗略和现成的方法。这取决于您要为此付出多少努力。

【讨论】:

  • @MichaelPetrotta 同意了。完全地。但这并没有那么糟糕——我已经在需要的时候做了。主要是在 SO 之前的日子,但仍然 :-) 实际上不能做的事情很少。 SO 有时与“可能”的文档有点过于联系
  • 我删除了我上面的评论,因为没有必要,但是由于 DiskJunky 回复了它,我会补充它:“如果 OP 真的需要这个功能,这是一个合理的路径,但 RegMon 反对资源管理器。没有良好过滤器的 exe - 就像从消防水管里喝水一样。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
相关资源
最近更新 更多