如何使用 c# wmp 打开播放列表文件

How can I open a playlist file using c# wmp

当我使用 Player.playlistCollection.newPlaylist("name") 时,它会在默认播放列表目录 (C:\Users\username\Music\Playlists) 中创建一个 name.wpl 文件。当我重新启动应用程序并将其传递给播放器时,如何打开该文件?

在您的应用程序目录中创建一些 .ini 设置文件。将路径保存到您的播放列表中。然后,当程序启动时,读取您的设置文件并获取播放列表的路径。

这是一个例子。在这里,我从应用程序文件夹中的 "Video" 文件夹获取文件并创建播放列表并循环播放

private void GetMediaFiles()
    {            
        FilePath = Application.StartupPath + "\Videos\";
        FileCount = Directory.GetFiles(FilePath).Length;
        Files = Directory.GetFiles(FilePath);

        playlist = axWMPlayer.playlistCollection.newPlaylist("PlaylistName");


        for (int Count = 0; Count < FileCount; Count++)
        {
            media = axWMPlayer.newMedia(Files[Count]);
            playlist.appendItem(media);
        }

        RunMedia();
    }

    private void RunMedia()
    {
        try 
        {
            if (playlist.count > 0)
            {
                axWMPlayer.BringToFront();
                axWMPlayer.currentPlaylist = playlist;
                axWMPlayer.Ctlcontrols.play();
                axWMPlayer.stretchToFit = true;                
            }
            else
            {
                pbDefaultImage.BringToFront();                    
            }
        }

        catch (Exception ex)
        {
            LogException(ex);                
        }
    }

我通过创建自定义播放列表文件解决了这个问题,其中每一行都是一个媒体文件 url。所以当应用程序启动时,它会逐行读取文件并将其添加到 wmp 播放列表中。

    private WMPLib.IWMPPlaylist openPlaylist(string playlistName)
    {
        WMPLib.IWMPPlaylist tempPlaylist = Player.newPlaylist(playlistName, null);
        using (System.IO.StreamReader sr = new System.IO.StreamReader(System.IO.Directory.GetCurrentDirectory() + "\playlists\" + playlistName + ".cpt"))
        {
            while (sr.Peek() >= 0)
            {
                string tempMediaUrl = sr.ReadLine();
                WMPLib.IWMPMedia tempMedia = Player.newMedia(tempMediaUrl);
                tempPlaylist.appendItem(tempMedia);
            }
            return tempPlaylist;
        }
    }