我使用 ATL (Visual Studio 2008) 创建了一个 Windows Shell 扩展。它具有以下模块,每个模块都是一个单独的 ATL 简单对象,具有自己的 .rgs 文件用于注册:-
- IShellFolder/IShellView -> 用于 Windows 资源管理器中的虚拟驱动器
- IContextMenu/IShellExtInit -> 用于弹出菜单文件和文件夹
- IShellIconOverlayIdentifier - 在文件和文件夹上显示覆盖图标
- IShellPropSheetExt/IShellExtInit -> 用于文件和文件夹属性中的自定义属性页
以上在 WinXP 中工作正常,我能够在 WinXP 中调试这个 shell 扩展。但是当我切换到 Vista 时,我只会得到 (2) 和 (4) 的方法调用。该驱动器是在 Windows 资源管理器中创建的,但是当我单击它时不会调用底层方法。虽然当我右键单击时,我被调用(2),当我为文件或文件夹选择“属性”时,我进入了(4)的代码。
Vista上的(1)和(3)是否有一些我缺少的界面。我在 MSDN 上找不到有关为 Vista 编写 Shell 扩展的完整详细文档。我已经阅读了有关 shell 扩展的 CodeProject 文章。