Win32 有 Api 可以删除某个 app 的托盘图标吗?

2018 年 10 月 19 日
 TangMonk

https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shell_notifyicona

貌似只能添加

3147 次点击
所在节点    Windows
13 条回复
luojianxhlxt
2018 年 10 月 19 日
api 我觉得是没有的吧,自己的 app 有
geelaw
2018 年 10 月 19 日
首先,那个东西叫做“通知区域”而不是“托盘”。

其次,在主区域显示和不显示图标是用户决定的,是否有一个图标(包括可选的删除行为)是程序决定的。

如果你不想要某个程序的图标,把它拖入通知区域的折叠区域,或者不要用那个 app,或者要求那个 app 删除自己的图标。
crab
2018 年 10 月 19 日
用 SendMessage 隐藏
TangMonk
2018 年 10 月 19 日
@geelaw 那 tray 是什么?
geelaw
2018 年 10 月 19 日
@TangMonk #27 (system) tray 也是一个错误的说法,那个东西叫 (taskbar) notification area。
tabris17
2018 年 10 月 19 日
用 Shell_NotifyIcon 发送 NIM_DELETE 消息。不过你要先获得窗口句柄
xupefei
2018 年 10 月 19 日
用反汇编工具 nop 掉 NIM_ADD 的那个 Shell_NotifyIconA 调用。
geelaw
2018 年 10 月 19 日
@xupefei #7 按照你的思路,正确的方法是屏蔽 Shell_NotifyIconW。

@tabris17 #6 你需要知道 uID 或者 guidItem。
tabris17
2018 年 10 月 19 日
@geelaw 应该有办法枚举出来,这些数据应该可以从 shell 进程里获取到
TangMonk
2018 年 10 月 19 日
@geelaw 是 alias,不是错误的叫法

geelaw
2018 年 10 月 20 日
@TangMonk #10 这是一个文档 bug。正确的说法是 mistaken as system tray among the communities,或者文档在委婉地表达这个意思。从 Windows 95 开始有这个东西以来它就叫做 notification area。

@tabris17 #9 这显然是 unsupported way。
TangMonk
2018 年 10 月 20 日
@geelaw 有依据吗
geelaw
2018 年 10 月 20 日

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499062

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX