Windows 照片查看器如何从 Windows 资源管理器获取幻灯片文件?

How does Windows Photo Viewer get the files for the slideshow from Windows Explorer?

我用 C# 编写了一个图像查看器应用程序来替换 Windows 7 照片查看器,它没有我需要的一个功能,即直接从视图屏幕设置评级和关键字,而不是通过打开一些不太用户友好的 属性 页面。它可以满足我的需要,但我想通过幻灯片放映来改进它。

用Windows 7 Photo Viewer,我一般都是设置图片的关键字,我用的是Windows Explorer "organize by"功能,点一个关键字,双击一个文件和 运行 那里的幻灯片。

但是当我在 Windows Explorer 中双击关键字-"organized" 文件夹中的文件时,我的应用程序得到的只是命令行参数,即文件的全名。

我可以承认 运行从那里开始我的幻灯片放映,使用 System.IO.Path.GetDirectoryName 从文件夹中获取所有文件,但我发现它缺少某些 "panache",不是吗觉得?

我这里不是要代码。但是有人能给我指出正确的方向吗?我不知道 WindowsExplorer 实际上给 PhotoViewer 什么,允许它只显示所需的文件。为什么。

感谢您的帮助。

当您使用 Windows 资源管理器的按功能组织时,它会创建特殊的虚拟文件夹。并且此文件夹仅包含具有选定关键字的文件。 PhotoViewer 的打开机制与标准方式不同。如果您打开 HKEY_CLASSES_ROOT\jpegfile\shell\open 注册表项,您将看到 DropTarget 子项在哪里。这意味着当您双击文件时,shell 使用来自 DropTarget 子项的 CLSID 创建 inproc com 服务器,并将图像的 虚拟路径 传递给 IDropTarget 实例。所以 PhotoViewer 使用虚拟对象列表而不是物理目录。