Windows API:是否可以知道用户是否隐藏了系统托盘中的图标?

时间:2010-03-18 07:49:57

标签: winapi system-tray

我需要知道用户是否隐藏了我的程序添加到系统托盘区域的图标。 技术上可行吗?

UPDATE 我的程序 - yowindow在系统托盘图标中显示当前温度。 我想通过不为没有看到托盘图标的用户自动更新天气来节省服务器负载。

2 个答案:

答案 0 :(得分:3)

没有

即使您有这些信息,您会对这些信息做些什么?

(请注意 - 我猜你可以进行屏幕抓取,找出任务栏所在的位置,找出系统托盘的位置,“解析”每个图标,然后将每个图标与每个图标进行比较。但实际上。 ..)

在查看此related question

时,您可能值得

基于第一个编辑问题

我可以看到你的观点。但是从Windows API设计者的POV看它。他们提供了一种以“始终可见”的方式创建图标的工具。并且每个人+狗继续在那里放置一个图标,假设用户总是想知道他们的产品(请注意,我并不是说你在这里小组在这里。)

他们已经注意到这种失控的行为,虽然他们现在无法取消创建这些图标的能力,但他们希望给予用户控制权。

现在我们来解决这个问题。想象一下,你是一个不那么开明的开发者。如果您检测到您的图标已被隐藏,则会弹出一条消息,提示用户取消隐藏您的图标。也许你每次登录都这样做一次。也许你每隔半小时就做一次。这只是用户烦恼的一般程度,类似于托盘中出现40个图标,当用户不关心他们中的大部分时

问题是 - 如果您正在设计API以允许开发人员发现他们的图标是否实际上是隐藏的。你如何允许你的良性使用,同时防止前一段中的行为?花几分钟试图伪装成一个Windows API设计器,并尝试编写必要的函数(为了争论,假设讨厌的开发人员不愿意实现IAmEvil接口,或者其他什么,或者会愿意实现IOnlyDoGood接口...)

希望你的图标很有用,用户可以a)显示你的图标,或b)删除你的应用程序(如果它没有做他们想要/需要的事情)

答案 1 :(得分:1)

据我所知,目前还没有API函数,并且没有很好的解决方案。您可以在安装后直接显示托盘中的消息,告知用户该图标可能已隐藏。并不是说它会有所帮助,但这就是你能做的一切。我已经看到程序通过定期显示该消息来对用户造成错误,但这确实不是一件好事。