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