title: Changing Desktop Wallpaper Periodically
body: <p>I have a problem setting the desktop wallpaper using the following code. The SystemParametersInfo returns true but it doesn't change the wallpaper. It is the same as before without any changes. But I want the code to change wallpaper periodically from a directory of *.bmp files. Please let me know where I'm making a mistake. </p>
  
  <pre><code>class Program
  {
      [DllImport("user32.dll")]
      public static extern bool SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, string pvParam, UInt32 fWinIni);
      static FileInfo[] images;
      static int currentImage;
  
      static void Main(string[] args)
      {
          DirectoryInfo dirInfo = new DirectoryInfo(@"C:/users/Smart-PC/Desktop");
          images = dirInfo.GetFiles("*.bmp", SearchOption.TopDirectoryOnly);
  
          currentImage = 0;
  
          System.Timers.Timer imageChangeTimer = new Timer(5000);
          imageChangeTimer.Elapsed += new ElapsedEventHandler(imageChangeTimer_Elapsed);
          imageChangeTimer.Start();
  
          Console.ReadLine();
      }
  
      static void imageChangeTimer_Elapsed(object sender, ElapsedEventArgs e)
      {
          const uint SPI_SETDESKWALLPAPER = 30;
          const int SPIF_UPDATEINIFILE = 0x01;
          const int SPIF_SENDWININICHANGE = 0x02;
          bool gk;
          gk = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, images[currentImage++].FullName, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
          Console.Write(gk);
          Console.WriteLine(images[currentImage].FullName);
          currentImage = (currentImage &gt;= images.Length) ? 0 : currentImage;
      }
  }
  </code></pre>