1

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

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

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

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

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

谢谢你的帮助。

4

1 回答 1

1

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

于 2017-03-12T18:37:54.837 回答