Sem GÖKSU - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Çalışmalarım | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim
İçerik Kategorileri
Makale Kategorileri
Etiket Bulutu
Arama
Tema
Kaynaklar
Takip Ettiklerim

C# 2.0

C# ile MASAÜSTÜ ARKAPLANINI DEGISTIRME


Isletim sistemimiz üzerindeki neredeyse tüm ayarlar registry'de saklanir. Masaüstü arkaplan resmi de bunlardan bir tanesidir. Registery'e erismek için .Net Framework içerisinde Win32 namespace'nin altinda RegistryKey Sinifi bulunmaktadir. Bu sinif Kayit Defterinde bulunan registry degerleri okumamiza, silmemize ve degistirmemizi saglar. Özellikleri ve metodlari sunlardir.

Name Özelligi
Anahtarin adini verir.

SubKeyCount Özelligi
Alt anahtar sayisini verir.

ValueCount Özelligi
Deger sayisini verir.  

OpenSubKey() Metodu

Bu metod bir deger okumak amaciyla kullanilir ve geriye registry'e kaydedilmis bir alt anahtar açar.

GetValue() Metodu

Seçilen anahtarin degeri gösterir.  

SetValue() Metodu

Seçilen anahtara yeni degeri atanir.

DeleteSubKey() Metodu

Alt anahtari siler.  

Close() Metodu

Açilan anahtari kapatir.

Evet kullanacagimiz metodlari inceledikten sonra  ilk olarak yeni bir proje açalim 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öse, Ortala, Sigdir
}

public void ArkaPlaniDegistir(string path, Pozisyon Pozisyon)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true); // Wallpaperin tutuldugu registry Key'i açiyoruz.
switch(Pozisyon) //Keye yeni degeri atiyoruz.
{
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); // Ayarlari Kaydediyoruz.
     }
   }
}

 

Simdi bir form ekleyelim ve içine bir tane buton koyalim.

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

 

Simdi masaüstümüzdeki resmi degistirecek kodu yazalim ve buton'a tiklayalim.

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 farkli özellikleri kullanarak farkli sonuçlar elde edebiliriz.
}

Butona tikladim ve sonuç :)

Bir sonra ki makalemiz de görüsmek üzere. Iyi çalismalar dilerim.

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

Kaynaklar
http://www.msdn.com

Bu makaleye henüz yorum yapılmamış. | 13.06.2008 06:40:06

Basit bir FTP Uygulaması


 FTP

FTP (File Transfer Protocol) Internete baglı bir bilgisayardan digerine (her iki yönde de) dosya aktarımı yapmak için gelistirilen bir internet protokolü ve bu isi yapan uygulama programlarına verilen genel addır. Ilk gelistirilen internet protokollerinden biridir. FTP protokolü ile bir baska bilgisayardan bir baska bilgisayara dosya aktarımı yapılırken, o bilgisayar ile etkilesimli-aynı anda (on-line) baglantı kurulur ve protokol ile saglanan bir dizi komutlar yardımıyla iki bilgisayar arasında dosya alma/gönderme islemleri yapılır.

Bir web projesi yada web sitesi yaptıgımızda bunu yayınlamak için bir FTP programına ihtiyaç duyarız. Bunu nasıl yaparız? FTP programını açar, ftp bilgilerimiz ile ftp'ye baglanır ilgili dosyaları ftp alanına transfer ederiz.



FTP kullanımı sadece bununla da sınırlı degildir elbette. Örnegin kendi sistemimiz üzerinden (bu bir winform uygulaması olabilir) web sitemize içerik girmemiz gerektiginde ilgili içerige bir dosya eklemek istedigimizde isimizi çok kolaylastıracak bir yöntemdir.

.Net Framework da bu isi FtpWebRequest classı ile yaparız. Simdi kısaca bu classı tanıyalım.

FtpWebRequest

Framework 2.0 içersinde FTP ile çalısmamızı saglayan yeni bir class eklendi. Bu classın adı FtpWebRequest. Bu class System.net namespace'si altında bulunmaktadır. Webclient sınıfını kullanarak uzaktaki bir sunucudan FTP'ye baglanarak bir dosya indirebilir yada sunucuya bir dosya yükleyebiliriz.

ÖRNEK

Biz bu uygulamamızda kendi uygulamamız üzerinden bir ftp'ye baglanıp FTP'ye bir dosya upload edip yine FTP'en kendi makinemize bir dosya download edecegiz.

Ilk olarak yeni bir windows projesi olusturalım;

Formumuz üzerine 2 buton ekleyelim. Ilk butona bastıgımızda upload islemini gerçeklestirecek. Diger butonda FTP'den dosya indirmemizi saglayacak. Benim hazırlamıs oldugum form asagıdaki gibidir.



Ilk olarak FTP'ye baglanarak bir dosya indirelim. Bunun için gerekli kodları yazmaya baslayalım;

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.xxxxxx.com/xxx/sem.swf");

//Sunucu ile haberlesecek bir FtpWebRequest objesi yarattık. Simdi bu obje için login olmak için gerekli bilgilerini olusturalım.

request.Credentials = new NetworkCredential("xxxxx", "xxxxx");

using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())

{

Stream data = response.GetResponseStream();

string targetPath = "C:/sem.swf";//Local makinedeki dosyanın tam yolunu belirtelim

if (File.Exists(targetPath)) // Dosya varsa sil.

File.Delete(targetPath);

byte[] byteBuffer = new byte[4096];

// Dosyayı loacal makinemize aktarıyoruz

using (FileStream output = new FileStream(targetPath, FileMode.CreateNew))

{

int bytesRead = 0;

do

{

bytesRead = data.Read(byteBuffer, 0, byteBuffer.Length);

if (bytesRead > 0)

{

output.Write(byteBuffer, 0, bytesRead);

}

}

while (bytesRead > 0);

}

}

FTP'den dosyayı indirme islemini tamamladık. Simdi de sunucuya bir dosya yükleyelim. Bunun için gerekli kodlar;

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www. xxxxxx.com/xx/sem.jpg"); // FTP'den indirecegimiz dosyayı belirtiyoruz.

request.Method = WebRequestMethods.Ftp.UploadFile;

request.Credentials = new NetworkCredential("xxxxx ", " xxxxx ");

// Login olmak için gerekli bilgilerini olusturalım.

StreamReader sourceStream = new StreamReader("c:/sem.jpg");

byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());

sourceStream.Close();

request.ContentLength = fileContents.Length;

Stream requestStream = request.GetRequestStream();

requestStream.Write(fileContents, 0, fileContents.Length);

requestStream.Close();

Upload islemimiz de bu kadar. Simdi bu yaptıklarımızı test edelim ;) Ilk Olarak Yükle butonuna tıklayalım;



FTP'ye baglanalım, bakalım upload islemini gerçeklestirmismi?



Evet Sem.jpg isimli dosya sunucu da artık J Simdi hemen altındaki sem.swf isimli dosyayı Bilgisayarımıza indirelim. Bunun için indir butonuna tıklayalım.



Sonucu görmek için C: sürücüsüne bakalım;



Evet sem.swf'yi bilgisayarımıza indirdik. Gerçekten güzel ve ise yarayacak bir class'mıs J

Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek Kodlar için mail adresimi kullanabilirsiniz

sem.goksu@yazilimgunlugu.com
www.yazilimgunlugu.com

Kaynaklar

http://msdn.com

Bu makaleye 6 yorum yapılmış. | 06.06.2007 15:05:07

C# Settings(Ayarlar) Dosyasının Kullanımı


Giris

.Net FrameWork 2.0 oturum ve uygulama arasında kalan degerlere erismemize ve yeni degerler  olusturmamıza izin verir. Bu degerler "Settings" olarak adlandırılır. Settings dosyası kullanımına ihtiyaç duyulan uygulama bilgilerini yada kullanıcı ayarlarını temsil eder. Örnegin; uygulamanın renk seması için kullanıcı ayarlarını saklayan ayarları olusturabiliriz. Yada uygulamada kullanılan bir database'e belirlenen bir ConnectionString''i saklayabilirsin. Settings(Ayarlar) kullanıcıların ayarlarını saklayan profilleri olusturmamıza ve kodun uygulama dısında olan bilgilerine erismemize izin verir.

Uygulama Ve Kullanıcı Ayarları

  Settings'lerin 4 adet özelligi vardır;  

1.      Name: Çalısma Zamanında ayarın degerine erismek için kullanılan addır.

2.      Type: Ayarları temsil eden .Net Framework tipidir. Kullanıcı ayarlarını saklar.

3.      Scope: Çalısma zamanında ayarlara nasıl erisilecegini temsil eden özelliktir.

4.      Value: Ayarlara erisildiginde geriye döndürülecek olan degerdir.

Yeni Bir Settings Dosyası Olusturmak için;

1.      Projemiz üzerinde sag tıklayıp, Add New Item

2.      Settings Dosyasını seçeriz ve projemize ekleriz.



Settings dosyasını projemize ekledik, görünüm olarak biraz inceleyelim;

Yukarıda da belirttigimiz gibi Settings dosyalarının 4 adet özelligi var. Name, Type, Scope, Value. 

Artık örnegimize geçelim ve olusturdugumuz Settings dosyasını kullanalım.

Örnek

Örnegimizde northwind database'ne baglanıp connection string'i Settings dosyası içerisinden çagıracagız. Formumuzun baslıgını, arka plan rengini ve font adını settings doyası içerisinden alacagız.

Formumuzun üzerine bir adet grid ekleyelim. Bu grid içerisinde Categories Tablosundaki kayıtları listeleyecegiz.



Simdi Kayıtlarımızı listeleyecek kodları yazalım.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace SettingsFile

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        SqlConnection Cnn;

        SqlDataAdapter Dadp;

        DataSet Dset;

        private void Form1_Load(object sender, EventArgs e)

        {

        Cnn = new SqlConnection(sem.Default.ConnectionString.ToString());

// ConnectionString Degerini Settings dosyası içerisinden çagırdık.  

        Dadp = new SqlDataAdapter("Select * from Categories",Cnn);

        Dset = new DataSet();

        Dadp.Fill(Dset, "table");

        dataGridView1.DataSource=Dset.Tables[0];

        }

    }

}


ConnectionString'i settings dosyası içerisinden kullandık. Simdi Form baslıgımızı, form backgroundunu ve gridimizin font ayarını settings dosyasından yapalım

        this.Text = sem.Default.FormBaslıgı.ToString();

        this.BackColor = sem.Default.ArkaPlanRengi;

        this.Font = sem.Default.FormFondu;

Evet tüm ayarlarımızı settings dosyası içerisinden ayarladık. Görüldügü gibi form baslıgı, background rengi ve font family settings dosyası içerisinde belirledigimiz degerelere göre geldi.

Bu makalenin de sonuna geldik, baska bir makalede görüsmek üzere basarı ve iyi günler dilerim.

Sem GÖKSU

MCP | MCAD.NET | MCTS 

Örnek Kodlar için mail adresimi kullanabilirsiniz

askisem@hotmail.com  

Kaynaklar
http://msdn.com

Bu makaleye henüz yorum yapılmamış. | 17.12.2006 00:00:00

Ana Sayfa | Hakkımda | Çalışmalarım | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Sem Göksu 2004-2009 © Tüm Hakları Saklıdır.