C# ve File Association (Kendi Formatınız)

CaLLaHaN

Uzman üye
6 Kas 2010
1,935
0
117
ƒєηєявαнçєCυмнυяiyeti
C# ve File Association (Kendi Formatınız)
Selamun Aleyküm.
İlk önce File Association nedir ondan bahsedelim. Sözlük anlamı “Dosya İlişkilendirmesi” olan File Association , bilgisayarımızdaki farklı formatlardaki dosyaların, programlarla ilişkilendirilmesine denir. Yani bir program yazdınız ve bu program ile kayıt ettiğiniz (Örneğin: .CWX formatında) dosyaların ikonlarının kendi programınızın ikonu olmasını ve kayıt dosyası açıldığında sizin programınızın ortaya çıkması diyebiliriz.
Öncelikle nasıl yapıldığını anlatayım daha sonra C# kodu ile makaleyi destekleriz.
Peki bu olayın olması için yani .CWX formatlı dosyaya tıkladığınızda karşınıza istediğiniz programın çıkması için ne yapacağız ?
Bu ayarları yapabilmemiz için Kayıt Defteri ( Registry Editor ) işimizi görecektir. Başlat > Arama > “Regedit” yazıp Kayıt Defterine ulaşabilirsiniz.
Kayıt defteri karşımıza çıktıktan sonra ”HKEY_CLASSES_ROOT” dizinine sağ tıklayıp “Yeni” > “Anahtar” diyoruz. Alttaki gibi klasörleri oluşturun.
Şimdi sırayla gidelim. Klasörün tanımı ve varsayılan değeri şeklinde ilerleyelim.
Bu klasör bizim tanımladığımız formattır. Siz kendi formatınızı göre değiştirebilirsiniz.
“.cwx” klasörüne tıklayıp varsayılan değerine “cwxfile” yazıyoruz. Bunu yazmamızın sebebi altında oluşturduğumuz dosya formatının bilgilerini tutan klasörü hedef olarak göstermemizdir. Yani bir altındaki “cwxfile” adında oluşurduğum klasörün adını “MaserDosya” olarak yazsaydım varsayılan değer olarak “MaserDosya” yazacaktım.
Bu klasör bizim dosya uzantımızın bilgilerini saklar. İkon , çalıştırılacak program vs..
Varsayılan değeri ise dosya uzantısının açılımıdır. Mesela .bmp formatının açılımı “Bitmap File” olarak yazar. Bizde “CW X Dosyası” diye yazabiliriz.
Bu klasörün varsayılan değeri nasıl .mp3 formatlı bir dosyaya sağ tıkladığımızda “winamp ile aç” yazıyorsa bunda da aynısı olur. “.cwx” formatlı bir dosyaya sağ tıkladığınızda görünecek yazıyı bu değere girebilirsiniz. Ben “CW X Okuyucu İle Aç” yazıyorum.
Bu klasörün varsayılan değerini ise dosya yolunun hangi programa parametre olarak gönderileceğini yazıyoruz. Örneğin “C:\\windows\\system32\\notepad.exe %1” yazabilirsiniz. Veyahut kendi yazdığınız programın yolunu yazabilirsiniz Buradaki “%1” parametre sayısı.
(Not: “\\” bunlar tektir. Forum bunları çift yapmaktadır.)
Varsayılan değer olarak .cwx formatlı dosyaların ikonlarının ne olacağıdır. C:\\Maşer.ico olarak değer girdiğinizde, artık .cwx formatlı dosyalar bu ikona sahip olacaklardır.
Artık Dosya ilişkilendirme işlemimiz bitmiştir. Şimdi Oturumu Kapat diyip tekrar başlatalım. Masaüstüne “deneme.cwx” adında bir dosya oluşturalım. Dosyayı açtığınızda Command klasöründeki varsayılan değerin gösterdiği programı açacaktır.
Bu kadar anlatım yeterli sanırım şimdi C# ile ufak bir proje yapıp işi tamamen anlayalım.
Öncelikle şunu belirteyim ki bu regedit kayıtlarını C# değil “installer” programı yapmalıdır. Yani programın bilgisayara yüklenmesi esnasında bu regedit girdilerini yapması lazım. Onu da “Setup Yapma Programı” diye aratırsanız birsürü sonuç çıkar. Genelinde regedite kayıt girme vardır zaten. Şimdilik biz elle regedit’e kayıt yapacağız.
——————————————————————————————————-
Uygulama Geliştirme
——————————————————————————————————-
Yukarıdaki gibi form tasarımını yapalım. Kodlara geçelim.
private **** kaydetToolStripMenuItem_Click(object sender, EventArgs e)
{
if (textBox1.Text !=”")
{
saveFileDialog1.Filter = “CW X Dosyası |*.cwx”;
saveFileDialog1.DefaultExt = “C:\\\\”;
saveFileDialog1.FileName = “”;
saveFileDialog1.ShowDialog();
try
{
StreamWriter yaz = new StreamWriter(@saveFileDialog1.FileName);
yaz.Write(textBox1.Text);
yaz.Close();



}
catch (Exception)
{
}
}
}
private **** Form1_Load(object sender, EventArgs e)
{
// Parametreleri bir diziye atyoruz.
string[] param = Environment.GetCommandLineArgs();
// Parametre deerlerine 0. indexli olarak programn yolu gelir.
// 1. index li olarak ise kaytl dosyann yolu gelir.
// Yani 2 tane parametre gelmise, kayt dosyalarndan birinin almasyla
//bu program balatlm demektir.
// Eer 2 parametre gelmise
if (param.Length == 2)
{
// Gelen parametre deerlerinden 2. sini al oku.
StreamReader oku = new StreamReader(@param[1]);
textBox1.Text = oku.ReadToEnd();
oku.Close();
}
}
Programımızı yazdık artık programımız hazır halde. Visual Studio üzerinden Debug ettiğimizde açılan program parametre almadan çalışır. Sonuçta direk kendisini çalıştırıyoruz.
Debuging işlemi sonunda ortaya çıkan “\\Belgeler\\Visual Studio 20..\\Project\\…..\\Debug\\…..exe” dosyası kopyalayıp “C:\\” nin içine yapıştırın ve dosyanın ismini “program.exe” olarak değiştirin.
Şimdi makalenin başında oluşturduğumuz .cwx formatın üzerinde oynama yapalım.
Bunun değerini “CW X Okuyucu İle Aç” olarak değiştirebilirsiniz.
Bunun değerini ise “C:\\program.exe %1” olarak değiştiriniz.
Bu değişiklikleri yaptıktan sonra Oturumu Kapatıp yeniden açınız. Artık sisteminiz hazır.
C:\\program.exe ye tıklayıp bir kayıt dosyası oluşturun. Daha sonra programı kapatıp kayıt dosyasını açınız. Kayıt dosyasına kayıt ettiğiniz yazılar programda açılmış olarak görünecektir. Binevi Not Defteri gibi bir şey oldu bu.
Cwden alıntıdır.
 

ByÇepNi

Üye
4 Ağu 2011
139
0
CepNiSoft
Yani herkes kendine özgü formatını yapabilir!
Bi deniyeyim bakalım.İnşALLAH olur araştırmışsın emeğine sağlık!
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.