我正在开发一个C ++应用程序,它在通知区域中创建一个带有气球提示的图标。当用户单击气球时,正在使用Shell_NotifyIcon(NIM_DELETE,& nid)删除图标,就像MSDN指示的那样。
问题是通知图标离开托盘,但它仍保留在“通知区域图标”窗口中(当您单击Windows 7/8托盘中的“自定义”选项时,该窗口将打开)。然后,如果用户重新启动程序,即使计算机正在重新启动,也可以重新启动程序多次重复图标。
我google了一下,我发现删除了一些注册表项,缓存可以清理,但是explorer.exe需要重新启动...但是这不是我想要实施的选项,原因很多。
我的问题是: - 你们有没有人见过这个? - 是否有Shell_NotifyIcon的替代方案(假设在Winapi中我没有太多经验,可能会使用这个问题); - 有没有办法在通知区域窗口中强制“缓存清理”而不重新启动explorer.exe?
对于那些可以提供帮助的人,我要提前感谢。
答案 0 :(得分:1)
事实上,IUserNotification2运作良好,问题解决了。
我使用Notifu´s,IUserNotification2和IQueryContinue编写了基于IUserNotificationCallback示例的新通知类。
感谢所有人的帮助。