如何在现有资源管理器 window 中打开给定目录或文件夹?

How do I open a given directory or folder in an existing Explorer window?

我正在尝试创建一个 shell 命令来打开执行该命令的资源管理器文件夹中的给定目录。

我会把它作为一个条目添加到 regedit (HKCR\Directory\background\shell) 的右键单击菜单中,但我不知道如何在当前的 Explorer 实例中实际打开该文件夹。 (如 "open file location" 选项)。

打开文件位置功能(shell32 中的 COpenFileLocationMenu)是一个 shell 扩展,而不是注册表中的简单静态命令。 COpenFileLocationMenu 还实现了 IObjectWithSite.

当调用 COpenFileLocationMenu 中的 IContextMenu::InvokeCommand 方法时,它会在其站点上调用 IUnknown_QueryService(..., SID_SInPlaceBrowser, IShellBrowser),以便它可以使用 IShellBrowser 在 Explorer window 中导航。

后台菜单项在 IShellExtInit::Initialize 中接收文件夹位置,普通菜单项可以使用 IShellBrowser::QueryActiveShellView 获取视图,然后找到当前位置...

如果你不想写一个 shell 扩展,那么你必须满足于 scriptable ShellWindows object 但你必须做一些猜测才能找到正确的 window,可能是通过从 Powershell 调用 GetForegroundWindow