如何在现有资源管理器 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
。
我正在尝试创建一个 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
。