在 Windows 7 中,如果您有Always show all icons and notifications on the taskbar
选项已禁用,单个应用程序的设置默认为Only show notifications
。
有没有一种神奇的方法可以改变默认设置Show icon and notifications
代替Only show notifications
?
用例:当新应用程序出现并向系统托盘添加图标时,系统默认显示图标和通知。我喜欢下面的大多数图标,因为它们可以快速访问正在运行的任何程序,但我仍然想有选择地隐藏下面我不想看到的几个图标。
如果我启用Always show all icons and notifications on the taskbar
我无法隐藏任何应用程序。如果我禁用它,我必须浏览列表中的每个应用程序并更改选项,然后密切关注是否有任何新应用程序。这就是我的问题。
答案1
这种默认行为也让我很烦恼。我同意微软的观点,对于大多数用户来说,默认“仅显示通知”可能是一个好主意。“通知区域”的目的(顾名思义)是向用户显示通知。它不应该成为公司放置无用图标的地方,这些图标只是“宣传”他们的程序,却什么也不做。
话虽如此,作为高级用户,我很清楚哪些托盘图标对我很重要,哪些我想隐藏。我更希望图标始终默认显示,但可以手动隐藏单个图标,就像 OP 所要求的那样。许多托盘图标不仅提供通知,还提供实时状态和快速访问设置和控件等。因此,我对缺少一个设置(甚至在注册表中)感到失望,该设置允许新通知图标默认行为是“显示图标和通知”。
我找不到这样的设置。James 上面提到的注册表项可能是不是很有用。首先,它位于 下HKLM
,这是机器范围的设置。但是托盘图标的行为是用户特定的,然而没有HKCU
与该键等效的键。
相关注册表项实际上HKCU\Software\Classes\Local Settings\Microsoft\Windows\CurrentVersion\TrayNotify
位于值中IconStreams
。此注册表项是二进制注册表项。它包含多个数据块,用于存储已添加通知图标的可执行文件的完整路径,以及每个图标显示的最后一个工具提示和每个图标的“显示”设置。
因此,尽管我还没有找到办法改变默认新图标的行为,我找到了一些很好的参考资料,介绍如何解密上述注册表项的二进制格式或如何使用(未记录的)接口访问相同的信息ITrayIcon
。这些方法用于生成可以以编程方式检测和更改单个托盘图标行为的实用程序。
由于可以通过编程访问这些信息,因此编写一个小型实用程序应该不难,该程序定期监视托盘图标列表并更改它检测到的任何新图标的行为。之后,它会记录图标的名称并且不会再次更改它,这样用户手动进行的任何更改都不会被覆盖。
以下是一些检测和修改单个托盘图标行为的代码示例:
2011 年 7 月 8 日由 Micah Rowland 发布的 PowerShell 脚本:Windows 7 通知区域自动化 – 重新陷入二进制注册表兔子洞 (确保阅读评论因为它们包含更新。)
C# 版本(包括 c++ 中的非托管代码)由 Hianz 于 2013 年 9 月 3 日发布新的 Windows 托盘/通知管理器就在这里!
这两个示例都很好地展示了如何制作一个小型实用程序,用于监控和更改新通知图标的行为。如果我有时间编写该实用程序,我会将其发布到这里。
答案2
答案3
似乎注册表破解可能会解决这个问题,但我并不喜欢为了这种基本的东西而破解你的操作系统。既然如此,我的简单答案是,你只能使用 Windows 7 提供的功能,如果你换个角度看,你不会一直安装新应用程序 - 只是偶尔安装一次。
我同意 Windows 7 需要一种通过应用程序执行此操作的方法,但目前看来你无法破解注册表 :-/