AdSense

Mittwoch, 24. Juli 2013

Windows 7 - Tageszeitabhängiger Hintergrund mit C#

(English version) Ich wollte unbedingt einen tageszeitabhängigen Hintergrund am PC haben. Windows kann das prinzipiell nicht, und ich wollte auch keine fremde Software installieren. Mit ein paar Zeilen C# war es dann jedoch ganz einfach möglich.

Ich habe einen Ordner, in dem 24 Dateien drin sind, 00.jpg, 01.jpg, ... 23.jpg. Diese sind also für von 0 bis 1 Uhr, und so weiter. Über C# wird die Datei dann als Desktophintergrund gesetzt, wie es auch hier beschrieben ist. Mein Code sieht folgendermaßen aus:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Runtime.InteropServices;

namespace TimeDependantBg
{
    class Program
    {
        [DllImport("user32.dll")]
        private static extern Int32 SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, String pvParam, UInt32 fWinIni);

        private static UInt32 SPI_SETDESKWALLPAPER = 20;
        private static UInt32 SPIF_UPDATEINIFILE = 0x1;

        static void Main(string[] args)
        {
            int hour;
            string basePath = @"C:\Users\Udo\TimeDependantBg\";
            string fileName;
            while (true)
            {
                hour = DateTime.Now.Hour;

                fileName = basePath + (hour % 24).ToString("00") + ".jpg";

                if (System.IO.File.Exists(fileName))
                {
                    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, fileName, SPIF_UPDATEINIFILE);
                }
                object lockObj = new object();
                lock (lockObj)
                {
                    Monitor.Wait(lockObj, 100000);// ms, alle 100 Sekunden check
                }
            }
        }
    }
}


Danach wird noch eine Verknüpfung in C:\Users\Udo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup zu TimeDependantBg.exe angelegt, sodass das Prorgamm automatisch beim Systemstart geöffnet wird.

Keine Kommentare:

Kommentar veröffentlichen