Winapi Shell_NotifyIcon - 在通知区域图标窗口中出现重复的图标

3
我正在开发一个C++应用程序,创建一个在通知区域内的图标,带有气泡提示。当用户点击气泡时,使用Shell_NotifyIcon(NIM_DELETE, &nid)删除该图标,按照MSDN的指示操作。
问题是,通知图标会离开托盘,但仍然留在“通知区域图标”窗口中(当您单击Windows 7/8托盘中的“自定义”选项时打开该窗口)。然后,如果用户重新启动程序,即使计算机被重新启动,该图标也会被复制多次。
我搜索了一下,并发现通过删除一些注册表键,可以清除缓存,但需要重新启动explorer.exe……但出于许多原因,这不是我想实践的选项。
我的问题是: - 你们有人以前见过这种情况吗? - 是否有替代方案来使用Shell_NotifyIcon(假设使用它可能是问题的原因,因为我在Winapi方面经验不太丰富); - 是否有任何方法可以强制通知区域窗口中的“缓存清理”,而无需重新启动explorer.exe?
对于能够提供帮助的人,提前致以感谢。

1
听起来NIM_DELETE实际上并没有起作用。检查你是否正确初始化了结构,因为它是一个相当令人困惑的API。 - Jonathan Potter
它已经成功从托盘中移除,但图标仍然存在于自定义窗口中。 - Eder Franco
它应该留在自定义对话框中。这样用户就知道图标首次出现,并且可以在再次出现时决定图标的行为。仅在自定义对话框中列出不应防止您的应用程序再次运行或显示相同的图标。如果它没有正常工作,或者重复显示,则您的托盘图标管理代码可能存在根本性错误。 - Remy Lebeau
1
至于替代方案,有IUserNotificationIUserNotification2接口,但它们只是使用Shell_NotifyIcon()内部的包装器。 - Remy Lebeau
1
我会尝试使用IUserNotification2。谢谢Remy! - Eder Franco
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接