我有一个简单的应用程序枚举 Windows Media Player 播放列表。它只是获取每个播放列表的名称并将其打印到控制台:
class Program
{
static void Main(string[] args)
{
var mediaPlayer = new WindowsMediaPlayer { uiMode = "invisible" };
var allPlaylists = mediaPlayer.playlistCollection.getAll();
Console.WriteLine("Found {0} wmp playlists");
for (int i = 0; i < allPlaylists.count; i++)
{
try
{
IWMPPlaylist wmpPlaylist = allPlaylists.Item(i); //Exception here!
Console.WriteLine("Playlist with index {0} has name '{1}'", i, wmpPlaylist.name);
}
catch (Exception e)
{
Console.WriteLine("Failed to get playlist with index {0} with error '{1}'", i, e.Message);
}
}
Console.ReadLine();
}
}
它在 Windows 8 上运行良好,但在尝试从 IWMPPlaylistArray 集合中获取播放列表项时在 Windows8.1 上抛出异常:
System.IO.DirectoryNotFoundException 被捕获 HResult=-2147024893 Message=系统找不到指定的路径。(来自 HRESULT 的异常:0x80070003)Source=WMP_POC StackTrace:在 WMPLib.IWMPPlaylistArray.Item(Int32 lIndex) 在 WMP_POC.Program.Main(String[] args) 在 InnerException:
即使在 Windows 8.1 上,它也适用于用户创建的播放列表,但对于像“所有音乐”、“所有视频”这样的预定义播放列表,则会发生异常。
请帮忙!