我试图创建一个shell命令来打开执行该命令的Explorer文件夹中的给定目录。
我会将其添加为regedit(tbx1.text = "hello"
tbx2.text = "goodbye"
tbx3.text = "goodnight"
tbx4.text = "good morning"
)中右键菜单的条目,但我无法弄清楚如何在当前的Explorer实例中实际打开文件夹。 (例如"打开文件位置"选项)。
答案 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
。