65.9K
CodeProject is changing. Read more.
Home

AviScreensaver: A C# screensaver that allows you to play your favourites media files

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Oct 20, 2005

CPOL
viewsIcon

40833

downloadIcon

1428

The screensaver plays from 1 to 16 video (or media files) simultaneously.

Sample Image - AviScreenSaver.jpg

Introduction

A screensaver consists of a form that can load from 1 to 16 Windows MediaPlayer controls. Each MediaPlayer control loads media files selected by the user, stores them in a random playlist, and then plays all the media Files. It can play all Windows Media Player supported formats (video files, image files, music).

private void ScreenSaverForm_Load(object sender, System.EventArgs e)
{
   Cursor.Hide();
   TopMost = true;
   
   // uso playlist perchè in futuro potrò selezionare più files
   string playlistName;
   string playlistBase = "ABU Video ScreenSaver Playlist";
   string[] selectedfiles = null;
   if (this.ScreenSettings.FileToPlay != String.Empty)
      selectedfiles = this.ScreenSettings.FileToPlay.Split(',');
 
   string[] folderFiles = 
       this.GetFolderFiles(this.ScreenSettings.FolderToPlay);
   
   int len = 0;
   
   if (selectedfiles != null)
      len += selectedfiles.Length;
   if (folderFiles!=null)
      len += folderFiles.Length;
   string[] files = new string[len];
   
   int startIndex = 0;
   if (selectedfiles != null)
   {
      selectedfiles.CopyTo(files, startIndex);
      startIndex = selectedfiles.Length;
   }
   // aggiungo i files della cartella
   if (folderFiles!=null)
      folderFiles.CopyTo(files, startIndex);
   // randomizzo
   string[] filesShuffled;
   
   // nota bene:
   // anche se posso gestire più riquadri video
   // in questo momento ne uso sempre e SOLO 1
   // perchè media player si arrabbia con più video in simultanea
   int cnt = 0;
   foreach (UserControl c in this.panelVideo.Controls)
   {
      cnt++;
      playlistName = playlistBase + cnt.ToString();
      if (this.ScreenSettings.Shuffle)
         filesShuffled = Shuffle(files);
      else
         filesShuffled = files;
      VideoFrame vfr = (VideoFrame)c;
      Microsoft.MediaPlayer.Interop.IWMPPlaylist pl;
   
      pl = vfr.axWindowsMediaPlayer.mediaCollection.getByName(playlistName);
      if (pl != null)
         pl.clear();
      else
         pl = vfr.axWindowsMediaPlayer.playlistCollection.newPlaylist(
                                       playlistName);
    
      for(int i=0; i<=filesShuffled.Length-1; i++)
      {
         if (System.IO.File.Exists(filesShuffled[i]))
         {
            Microsoft.MediaPlayer.Interop.IWMPMedia m = 
                 vfr.axWindowsMediaPlayer.newMedia(filesShuffled[i]);
            pl.appendItem(m);
         }
      }
    
      vfr.axWindowsMediaPlayer.currentPlaylist = pl;
   }
   // lancio i play tutti insieme
   foreach (UserControl c in this.panelVideo.Controls)
   {
      VideoFrame vfr = (VideoFrame)c;
      vfr.axWindowsMediaPlayer.Ctlcontrols.play();
   }
}

Requisite

Windows Media Player 9 or greater.

Updates / Fixes

  • 21/10/2005: Changed form options language to English; fixed setup project that wasn't deploying a DLL.