3

我正在开发一个 C++ 应用程序,该应用程序在通知区域中创建一个带有气球提示的图标。当用户单击气球时,将使用 Shell_NotifyIcon(NIM_DELETE, &nid) 删除图标,正如 MSDN 指示的那样。

问题是通知图标离开了托盘,但它仍保留在“通知区域图标”窗口中(当您单击 Windows 7/8 托盘中的“自定义”选项时打开的窗口)。然后,如果用户重新启动程序,图标将重复多次,因为程序可以重新启动,即使计算机正在重新启动。

我搜索了一下,发现删除了一些注册表项,可以清理缓存,但是需要重新启动 explorer.exe ......但这不是我想要实践的选项,原因有很多。

我的问题是: - 你们中的任何人以前见过这个吗?- 是否有其他 Shell_NotifyIcon 的替代方法(假设使用这个是问题的可能性,一旦我对 Winapi 没有太多经验);- 有没有办法在不重新启动 explorer.exe 的情况下在通知区域窗口中强制“缓存清理”?

对于那些可以提供帮助的人,我提前表示感谢。

4

1 回答 1

2

事实上,IUserNotification2 工作得很好,问题就解决了。

我基于Notifu的示例编写了一个新的通知类,使用IUserNotification2IQueryContinueIUserNotificationCallback

感谢大家的帮助。

于 2013-05-22T15:40:50.290 回答