Makale Özeti

Merhaba arkadaşlar, bu makalemizde C# ile işletim sistemimizin masaüstü arkaplan resminin nasıl değiştirileceğine bakacağız.

Makale

İşletim sistemimiz üzerindeki neredeyse tüm ayarlar registry’de saklanır. Masaüstü arkaplan resmi de bunlardan bir tanesidir. Registery'e erişmek için .Net Framework içerisinde Win32 namespace'nin altında RegistryKey Sınıfı bulunmaktadır. Bu sınıf Kayıt Defterinde bulunan registry değerleri okumamıza, silmemize ve değiştirmemizi sağlar. Özellikleri ve metodları şunlardır.

Name Özelliği
Anahtarın adını verir.

SubKeyCount Özelliği
Alt anahtar sayısını verir.

ValueCount Özelliği
Değer sayısını verir.  

OpenSubKey() Metodu

Bu metod bir değer okumak amacıyla kullanılır ve geriye registry’e kaydedilmiş bir alt anahtar açar.

GetValue() Metodu

Seçilen anahtarın değeri gösterir.  

SetValue() Metodu

Seçilen anahtara yeni değeri atanır.

DeleteSubKey() Metodu

Alt anahtarı siler.  

Close() Metodu

Açılan anahtarı kapatır.

Evet kullanacağımız metodları inceledikten sonra  ilk olarak yeni bir proje açalım ve bir class ekleyelim.

Wallpaper.cs

using System;
using System.Runtime.InteropServices;
using System.Drawing;
using Microsoft.Win32;
namespace ChangeWallpaper
{
public class Wallpaper
{
const int SPI_SETDESKWALLPAPER = 20;
const int SPIF_UPDATEINIFILE = 0x01;
const int SPIF_SENDWININICHANGE = 0x02;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern int SystemParametersInfo( int uAction, int uParam, string lpvParam, int fuWinIni);

public enum Pozisyon : int
{
Tiled,
Centered,
Stretched
// Resmi Döşe, Ortala, Sığdır
}

public void ArkaPlaniDegistir(string path, Pozisyon Pozisyon)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); // Wallpaperin tutulduğu registry Key’i açıyoruz.
switch(Pozisyon) //Keye yeni değeri atıyoruz.
{
case Pozisyon.Stretched : key.SetValue(@"WallpaperPozisyon", "2") ;
key.SetValue(@"TileWallpaper", "0") ; break;
case Pozisyon.Centered : key.SetValue(@"WallpaperPozisyon", "1") ;
key.SetValue(@"TileWallpaper", "0") ; break;
case Pozisyon.Tiled : key.SetValue(@"WallpaperPozisyon", "1") ;
key.SetValue(@"TileWallpaper", "1") ; break;
}

SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); // Ayarları Kaydediyoruz.
     }
   }
}

 

Şimdi bir form ekleyelim ve içine bir tane buton koyalım.

C:\ArkaPlan\Kediler.Bmp isimli bir resim koydum ve oradaki resim de işte burada :)

 

Şimdi masaüstümüzdeki resmi değiştirecek kodu yazalım ve buton’a tıklayalım.

Button1.Click

private void button1_Click(object sender, EventArgs e)
{
Wallpaper w = new Wallpaper();
w.ArkaPlaniDegistir("c:\\ArkaPlan\\Kediler.bmp", Wallpaper.Pozisyon.Centered);
// Burada enum içerisinde yer alan farklı özellikleri kullanarak farklı sonuçlar elde edebiliriz.
}

Butona tıkladım ve sonuç :)

Bir sonra ki makalemiz de görüşmek üzere. İyi çalışmalar dilerim.

Sem Göksu
sem.goksu@yazilimgunlugu.com
www.semgoksu.com | www.yazilimgunlugu.com

Kaynaklar
http://www.msdn.com