Delphi 修改windows 7预览窗格以显示文件夹';s子目录,而不是一个大的空框架

Delphi 修改windows 7预览窗格以显示文件夹';s子目录,而不是一个大的空框架,delphi,windows-7,system,windows-explorer,preview-pane,Delphi,Windows 7,System,Windows Explorer,Preview Pane,我想摆脱一个非常恼人的windows7行为,我认为除了通过编程覆盖windows之外,没有其他方法 由于我熟悉delphi,而且它也可以在系统编程中发挥很大作用,我正在考虑使用这种语言,但让我们先解释一下: 在windows 7文件资源管理器中,有一个预览窗格(通常位于任何资源管理器窗口的右侧),用于显示当前选定文件(office文件、图片、html和基于文本的文件)的内容(如果支持) 例如: 但该面板的一个恼人行为是,当您选择文件夹时,该面板将保持完全空: 我希望它显示选定文件夹的内容(文

我想摆脱一个非常恼人的windows7行为,我认为除了通过编程覆盖windows之外,没有其他方法

由于我熟悉delphi,而且它也可以在系统编程中发挥很大作用,我正在考虑使用这种语言,但让我们先解释一下:

在windows 7文件资源管理器中,有一个预览窗格(通常位于任何资源管理器窗口的右侧),用于显示当前选定文件(office文件、图片、html和基于文本的文件)的内容(如果支持)

例如:

但该面板的一个恼人行为是,当您选择文件夹时,该面板将保持完全空:

我希望它显示选定文件夹的内容(文件和文件夹图标和名称),这样就不需要打开它

要做到这一点,我想我必须处理windows dll。我知道我必须对此进行更深入的搜索,但我希望一些有经验的用户告诉我这是否绝对不可能,或者如果可能,从哪里开始调查,或者如何继续。 此外,欢迎提供任何其他建议

如果我能做到这一点,我很乐意在互联网上分享。

为注册表中的
HKEY\U CLASSES\U ROOT\文件夹创建自定义COM对象和
ProgID:

HKEY_CLASSES_ROOT\Folder\shellex\{8895b1c6-b41f-4c1c-a562-0d564250836f}
(Default) = [REG_SZ] "your CLSID here"

您的处理程序应该实现或,而不是,这样它就可以接收所选文件夹的路径/了。然后,您可以枚举该文件夹的内容,并根据需要在实现的UI中显示它。

不行。预览处理程序只能与文件关联。@DenisAnisimov:预览处理程序是用ProgID注册的,
文件夹
ProgID有一个子项用于注册文件夹的外壳扩展名。我将文件预览处理程序(用于
.doc
文件)注册到
文件夹
ProgID,当我在预览窗格打开的文件夹上单击时,Windows资源管理器立即开始暂停几秒钟,预览为空,而不是显示“无可用预览”。然后我删除了处理程序,暂停消失了,预览再次显示“没有可用的预览”。很明显,Windows资源管理器可以显示文件夹的预览。听起来不错。我只需要了解如何在Lazarus上实现COM对象。谢谢