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

时间:2017-09-08 08:55:12

标签: windows powershell cmd explorer

我试图创建一个shell命令来打开执行该命令的Explorer文件夹中的给定目录。

我会将其添加为regedit(tbx1.text = "hello" tbx2.text = "goodbye" tbx3.text = "goodnight" tbx4.text = "good morning" )中右键菜单的条目,但我无法弄清楚如何在当前的Explorer实例中实际打开文件夹。 (例如"打开文件位置"选项)。

1 个答案:

答案 0 :(得分:0)

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

当调用COpenFileLocationMenu中的IContextMenu::InvokeCommand方法时,它会在其网站上调用IUnknown_QueryService(..., SID_SInPlaceBrowser, IShellBrowser),以便它可以使用IShellBrowser导航资源管理器窗口。

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

如果您不想编写shell扩展,那么您必须选择scriptable ShellWindows object,但您必须做一些猜测才能找到正确的窗口,可能是通过PInvoke'ing来自Powershell的GetForegroundWindow