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

2018-10-19 11:39:03 +08:00
 TangMonk

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

貌似只能添加

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

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

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

@tabris17 #6 你需要知道 uID 或者 guidItem。
tabris17
2018-10-19 16:21:22 +08:00
@geelaw 应该有办法枚举出来,这些数据应该可以从 shell 进程里获取到
TangMonk
2018-10-19 17:15:20 +08:00
@geelaw 是 alias,不是错误的叫法

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

@tabris17 #9 这显然是 unsupported way。
TangMonk
2018-10-20 13:21:30 +08:00
@geelaw 有依据吗
geelaw
2018-10-20 14:44:57 +08:00

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

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

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

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

© 2021 V2EX