Windows 11下如何在现有Shell窗口新标签页打开文件夹?
如何在Windows 11的现有Shell窗口新标签页中打开文件夹?
说明:本问题仅适用于Windows 11。
我希望在现有Shell窗口的新标签页中打开文件夹,但目前没有官方API可用。我尝试了两种方法:
方法一:使用opennewtab谓词调用ShellExecute
- 调用带有
opennewtab谓词的ShellExecute函数,该谓词对应注册表项[HKEY_CLASSES_ROOT\Folder\shell\opennewtab] - 结果:仅为文件夹打开了新窗口,未实现现有窗口新标签页的需求
方法二:通过COM接口调用IExecuteCommand
- 分析注册表得知,
opennewtab谓词通过DelegateExecute实现为IExecuteCommand接口,因此尝试获取其COM服务器接口,调用IExecuteCommand的SetXXX系列函数、IInitializeCommand::Initialize方法设置参数后,执行Execute方法 - 为明确Windows Shell向这些方法传递的参数及调用顺序,我实现了自定义谓词及其COM服务器,替换了
opennewtab原注册的COM服务器,通过DebugView得到以下输出:
- 结果:发现Shell并未调用所有接口方法,按观察到的参数设置后触发了Null引用异常,仍未成功
说明:第二种方法属于取巧方案。
说明:默认谓词处理程序的CLSID为CLSID_ExecuteFolder。
请问如何在现有Shell窗口的新标签页中打开文件夹?
内容的提问来源于stack exchange,提问作者jtxkopt - STOP GENOCIDE
相关产品推荐
相关产品推荐

