获取 Windows Media Center 库中包含的目录

2024-04-14

我正在为 Media Center(Windows 7 附带的版本)编写一个加载项,并且想要检索用户已包含在媒体库中的物理目录列表(图片、视频、录制的电视、电影、音乐) 。

媒体中心对象模型 (Microsoft.MediaCenter.*)似乎没有任何规定来获取此信息。

注册表中有一个键位于HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Media Center\MediaFolders,但是这些总是空的。

似乎有完整的目录列表%userprofile%\AppData\Local\Microsoft\Media Player\wmpfolders.wmdb,但无法判断每个目录与哪个媒体库相关,并且由于这些是媒体播放器的设置,因此它们的存在可能只是巧合。

有谁知道如何reliably检索这些目录的列表,最好是从加载项程序集中检索(即使用 C#)?


我使用 Reflector 来了解 ehshell 是如何做到这一点的。对于图片、视频、音乐和录制的电视,它使用从 ehuihlp.dll 导入的方法。对于电影,它只是直接从中提取列表HKCR\Software\Microsoft\Windows\CurrentVersion\Media Center\MediaFolders\Movie.

以下是如何使用导入方法的示例:

using System.Runtime.InteropServices;

...

[DllImport(@"c:\Windows\ehome\ehuihlp.dll", CharSet = CharSet.Unicode)]
static extern int EhGetLocationsForLibrary(ref Guid knownFolderGuid, [MarshalAs(UnmanagedType.SafeArray)] out string[] locations);

...

Guid RecordedTVLibrary = new Guid("1a6fdba2-f42d-4358-a798-b74d745926c5");
Guid MusicLibrary = new Guid("2112ab0a-c86a-4ffe-a368-0de96e47012e");
Guid PicturesLibrary = new Guid("a990ae9f-a03b-4e80-94bc-9912d7504104");
Guid VideosLibrary = new Guid("491e922f-5643-4af4-a7eb-4e7a138d8174")

...

string[] locations;
EhGetLocationsForLibrary(ref PicturesLibrary, out locations);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 Windows Media Center 库中包含的目录 的相关文章

随机推荐