gpt4 book ai didi

shell - 在 Windows 10 上模拟 Win 7 收藏夹( shell 命名空间扩展)

转载 作者:行者123 更新时间:2023-12-04 17:06:35 28 4
gpt4 key购买 nike

你好亲爱的stackoverflow friend

几个月前我问过你一个关于 QuickAccess (Pin/Unpin) 的问题.不幸的是,我们仍然面临这个问题(无法取消固定虚拟对象)。在多次调用 Microsoft 支持后,他们回复我们,我们应该订阅高级支持......对于一家小公司来说太贵了。

所以我们决定在我们的 Shell 命名空间扩展中模仿 Windows 7 收藏夹。

在资源管理器中没什么大不了的,使用 View 的句柄和 lnk 的目标对象绝对 pidl 调用 ShellExecuteEx 就像一个魅力。

好得令人难以置信,是的,因为它在 IFileDialogs 中没有按预期工作......
首先,lnks(包装在虚拟对象中,但解析名称是文件系统路径)不是出于明显的原因显示在对话框中。因此,我们尝试使用诸如“SFGAO_FOLDER”、“SFGAO_FILESYSANCESTOR”等属性,但随后 shell 调用了 IShellFolder 的 EnumObjects,这不是我们想要的。

所以我们决定使用 IObjectWithSite 接口(interface),在我们的收藏夹文件夹中实现它。然后我们就可以使用来自 IFileDialogs 的事件,例如 OnSelectionChange。然后我们在资源管理器中尝试了同样的方法,获取 View 句柄(首先查询IOleWindow接口(interface),获取窗口句柄,使用窗口句柄在父IShellFolder中创建 View )并调用ShellExecuteEx......结果是..一个大应用程序(记事本、Word 等)崩溃并出现一个新的资源管理器窗口,其中选择了正确的虚拟对象。

可能是我的方法太复杂了,你有什么想法吗?

非常感谢!

最佳答案

感谢 Simon,我找到了解决方案,仍在进行中。问题在于解决方案中实现了 IContextMenu、IContextMenu2 和 IContextMenu3 接口(interface)。在 Windows 7 上,.lnk 菜单处理程序被调用,很好,另一方面,在 Windows 10 上你需要调用 SHCreateDefaultContextMenu ,然后合并菜单处理程序(SHCreateDefaultContextMenu 将调用 IShellFolder::GetUIObjectOf 和 IID_IQueryAssociations)。所以代码已经过时了......谢谢!

关于shell - 在 Windows 10 上模拟 Win 7 收藏夹( shell 命名空间扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53059802/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com