C++ windows资源管理器打开文件夹还原

C++ windows资源管理器打开文件夹还原,c++,winapi,C++,Winapi,为了更新一些桌面图标,我想停止并重新启动Windows资源管理器(WE),但不会丢失当前打开的文件夹。 要实现这一点,我需要保存当前打开的文件夹,然后自己还原它们,或者找到我们保存列表的位置,让它为我还原它们。 任何想法或意见都将不胜感激。如果您有,您可以拨打SHChangeNotify(SHCNE\u assocchange,SHCNF\u IDLIST,NULL,NULL) 您可以获取有关打开的资源管理器窗口的信息,但我建议您尝试使用()来代替。我认为它不会保留列表。每个打开的文件夹都有一个

为了更新一些桌面图标,我想停止并重新启动Windows资源管理器(WE),但不会丢失当前打开的文件夹。 要实现这一点,我需要保存当前打开的文件夹,然后自己还原它们,或者找到我们保存列表的位置,让它为我还原它们。 任何想法或意见都将不胜感激。

如果您有,您可以拨打
SHChangeNotify(SHCNE\u assocchange,SHCNF\u IDLIST,NULL,NULL)


您可以获取有关打开的资源管理器窗口的信息,但我建议您尝试使用()来代替。

我认为它不会保留列表。每个打开的文件夹都有一个窗口。有一个选项可以在重新启动后还原以前的WE窗口…可能它将文件夹存储在注册表中。我们需要有关您尝试更新的内容以及原因的更多信息。可能有一个API你应该调用,而不是使用一个大锤子…基本上我想模拟多桌面,因为我不喜欢任何一个我尝试过的。作为其中的一部分,我发现有时我们希望自己更新桌面上的图标,这使得很难知道何时完成,这就是为什么我希望在设置新布局之前将其“禁用”。Windows支持从Windows 10开始的虚拟桌面。除非我误解了“多桌面”的含义,否则您应该查看内置功能,而不是滚动自己的功能(这通常是一项非常重要的任务)。感谢您提供示例应用程序,包括源代码。实际上,它不会做我需要的事情,因为如果我从命令行运行RestartViaManager“C:\Windows\Explorer.exe”,它会重新启动我们,但任何打开的文件夹都不会在重新启动后打开,或者在重新启动期间保持打开状态。顺便说一句,
SHChangeNotify()
按上述方式调用时,不仅会刷新文件类型图标。它会清除整个图标缓存,因此也会刷新可执行文件的图标等等@堆栈器使用IShellWindows获取所有资源管理器窗口,保存其当前文件夹路径和位置。重新启动后,您可以恢复windows。您所需要的只是在链接页面上。@zett42 SHChangeNotify不会清除整个图标缓存。不过,它确实会强制重新加载许多图标。让我们同意,它所做的远远超过了文档所暗示的。雷蒙德·陈(Raymond Chen)将其称为。@zett42-在努力寻找足够的细节以获得我所需要的东西之后,我在:上找到了你的评论/解决方案,它让我得到了我认为/认为我需要的东西。我的下一个工作将是找出如何隐藏和显示任何资源管理器窗口,因为这将使它更容易-无需删除和恢复,只需隐藏和显示。您的解决方案确实列出了隐藏的窗口,这让我想到:-)