2017-03-12 42 views
1

我在C#中编写了一个图像查看器应用程序,以取代没有我需要的一个功能的Windows 7照片查看器,这是从视图屏幕直接设置评级和关键字,而不是打开一些用户友好的属性页面。它适用于我的需要,但我想用幻灯片来改进它。Windows照片查看器如何从Windows资源管理器中获取幻灯片的文件?

对于Windows 7照片查看器,我通常做的是设置图片的关键字,我使用Windows资源管理器“按功能组织”功能,单击一个关键字,双击一个文件并从那里运行幻灯片。

但是,当我在Windows资源管理器中的关键字“有组织的”文件夹中双击一个文件时,我的所有应用程序都得到的是命令行参数,即文件的全名。

我可以承认从那里运行我的幻灯片,使用System.IO.Path.GetDirectoryName从文件夹中获取所有文件,但我发现它缺少某种“panache”,你不觉得吗?

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

感谢您的任何帮助。

回答

1

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