HOŞ GELDİNİZ καλωσόρισμα

10 Mart 2013 Pazar

C# ile kendi dosya türümüzü oluşturalım UYGULAMa

C# ile kendi dosya türümüzü oluşturalım

Örnek uygulama KAYNAK DOSYAYI İNDİR

Sınıf yapılarını da tanıdığımıza göre, artık uygulamaya geçebiliriz.
Visual Studio içerisinde yeni bir Console Application projesi başlatıyoruz isim olarak RegistryApp verebilirsiniz.
Uygulamanın kodları:
//bizim programimizin iliskilendirilecegi dosya uzantisiconst string className = ".abc";
const string regIdentifier = "myOwnExt";
static string applicationPath = Environment.CommandLine;
static string iconPath = "";

[STAThread]
static void Main(string[] args)
{
//istedigimiz iconu alabilmek icin komut satiri degiskeninden //tirnaklari kaldirmali ve virgulden sonra icon indexini vermeliyiz ;)iconPath = applicationPath.Substring(0,applicationPath.LastIndexOf("\"")) + ", 0\"";
iconPath = iconPath.Replace("\"","");
CreateRegistryValue();
//registry duzenlemelerini yapalim..
if(args.Length > 0)
{
printArgs(args);
}

Console.ReadLine();

}

static void printArgs(string[] argList)
{
foreach(string arg in argList)
{
Console.WriteLine("{0}",arg);
}
}

static void CreateRegistryValue()
{
//HKEY_CLASSES_ROOT' u aciyoruz
RegistryKey regKey = Registry.ClassesRoot;
RegistryKey subKey;
//eger daha onceden yapilandirilmamis ise yapilandiriyoruzif(!isExists(regKey,className))
{
subKey = regKey.CreateSubKey(className);
subKey.SetValue("",regIdentifier); //varsayilan dize degerini belirliyoruz
subKey.Close(); //actigimiz keyi kapatalim
//eger uzantimizin tanimlayici anahtari da yaratilmadi ise bu asamada yaratabilirizif(!isExists(regKey,regIdentifier))
{
subKey = regKey.CreateSubKey(regIdentifier);
//dosyamizin bilgilerinde gorunecek turunu yaziyoruzsubKey.SetValue("","Kendi dosya türümüz");
//varsayilan iconu seciyoruzRegistryKey defaultIco = subKey.CreateSubKey("DefaultIcon");
defaultIco.SetValue("",iconPath);
defaultIco.Close();
//shell anahtarini belirliyoruzRegistryKey shellKey = subKey.CreateSubKey("shell");
shellKey.SetValue("","open");
//shell keyi altina, open keyini tanimliyoruzRegistryKey shellOpen = shellKey.CreateSubKey("open");
shellOpen.SetValue("","Ke&ndi uygulamam ile aç");
//son olarak open keyi altina, command keyini aciyoruz.RegistryKey openCommand = shellOpen.CreateSubKey("command");
openCommand.SetValue("",applicationPath+" %1");
//sirayla actigimiz tum keyleri kapatiyoruz.openCommand.Close();
shellOpen.Close();
shellKey.Close();
subKey.Close();
}
}
else{
Console.WriteLine("Dosya uzantisi zaten iliskilendirilmis");
}
}

static bool isExists(RegistryKey key,string checkValue)
{
//aranilan keyin olup olmadigini denetliyoruzif(key.OpenSubKey(checkValue) != null)
{
return true;
}
else
{
key.Close(); //kapatalim ki hataya sebep olmasin
return false;
}
}


Kodları tamamladıysak gelelim çalışma mantığına, uygulamamız her çalıştığında CreateRegistryValue metodunu çağırıyor, bu metod ise kabaca programımızın kayıt edeceği dosya uzantısının daha önce yaratılmış olup olmadığına bakıyor, eğer yoksa tüm düzenlemeleri ile yaratıp bizim için kullanıma hazır hale getiriyor.
Uygulamanın denenmesi





 
Evet, uygulamayı tamamladığımıza göre şimdi geldik deneme safhasına.
Uygulamamızın doğru çalışıp çalışmadığını denemek için pek tabi ilk önce kendi dosyamızı oluşturmamız lazım. Bunun için açıyoruz notepad' i ve (boş olabilir önemli değil) rastgele birşeyler karalayıp "save as" (farklı kaydet) diyoruz. Aşağıdaki şekilde dosyamızı kaydediyoruz.
kendi uazntımızın kaydedilmesi

Böylece C:\ içerisinde deneme.abc adında bir dosyamız oluşturulmuş olacak.
dosyamızın üzerine sağ tıklıyoruz


Ve son olarak, dosyamıza çift tıklayarak açıyoruz. Programımızın ekran görüntüsü aşağıdaki gibi olacaktır.
programımız çalışırken


Bu örnek uygulamadan yola çıkarak kendi programlarınıza istediğiniz dosyaları ilişkilendirebilirsiniz. Yapacaklarınız sadece bunlarla sınırlı değil tabi ki, birlikte aç menüsüne kendi programınızı ekleyebilmeniz buna bir örnek sayılabilir.

Hiç yorum yok:

Yorum Gönder

En Çok Okunanlar

Etiketler

3G (2) adobe (4) adsl (2) akıllı telefon (40) Amazon (3) android (34) android market (4) Angry Birds (2) Anonymous (3) antivirüs testi (3) Apple (74) application (2) Asus (9) Avea (4) Bilgisayar (13) bilim (42) bilimadamları (13) bim (1) Bing (1) board (1) browser (18) BT (2) Burn (3) CeBIT (2) cep telefonu (75) chrome (13) CISCO (1) CNN (1) Codec (1) da vinci (1) Dell (4) dijital (4) domain (6) donanım (151) doodle (2) download (4) e- mail (8) e-book (2) ege üniversitesi (1) eğitim (38) einstein (1) enerji (4) explorer (1) facebook (63) FIFA (5) fiber (3) fiber ağ (1) fibernet (2) firefox (12) fizy (1) Fotoğraf (10) fotoğraf makinesi (7) fullyfollowme (2) Galaxy Note (5) gmail (4) Google (56) Google Earth (3) google play (8) google+ (8) gsm (3) güvenli internet (19) güvenlik açığı (5) güvenlik tehditi (10) hacker (7) harddisk (4) hotmail (3) HP (12) HTC (3) IBM (1) IEEE (1) iletişim (12) index (1) instagram (6) intel (5) internet (122) internet explorer (8) internet explorer 9 (5) iOS (11) İpad (13) iPad 3 (5) iphone (39) iPhone 4S (1) iPhone 5 (9) İslam ZEYTİN (43) istanbul (3) iTunes (3) kamera (12) KeepVid (2) kitap (4) klavye (2) Laptop (2) Led (4) Led TV (2) LG (9) linkedin (2) Mac (8) marc zuckerberg (2) microsof office 2010 (3) Microsoft (52) Microsoft Security Essentials (2) mobil (101) Motorola (2) mozilla (4) MS (1) MSI (2) müzik (4) Nasa (8) nikon (3) Nintendo (2) nokia (15) Notebook (3) Numara taşıma (1) ODTÜ (4) Ofis (4) operatör (6) oyun (72) oyun köşesi (3) oyuncak (2) padfone (2) Pahalı İnternet (1) panasonic (1) para (3) Pardus (1) PC (8) Pepee (1) Pil (10) Ping (1) Playstation (7) programlama (6) projeksiyon (1) rasat (1) Raspberry pi (3) Rekabet (6) reklam (25) sağlık (14) Samsung (49) Samsung Galaxy (13) Sık Sorulanlar (42) Siber Saldırı (5) sim (5) Sinema (3) skype (15) smart tv (3) sms (3) sony (17) sosyal medya (73) Steve Jobs (3) SUPER 8 (1) suriye (1) şifre (7) Tablet (23) tarayıcı (6) tarih (2) tasarım (3) tehlike (23) Teknoloji (50) telefon (7) Televizyon (4) Tivibu (1) toolbar (1) Toshiba (4) ttnet (14) turkcell (21) türkiye (75) türktelekom (4) tv (12) twitter (21) ultrabook (7) usb (3) uydu (12) uygulama (38) uzay (17) üniversite (30) ürün inceleme (48) Vadofone (7) Vaio (1) Video indirme (5) virus (10) vitamin (1) VLC Media Player (1) Web (5) web kamera (1) web sitesi (8) webcam (1) Wii (3) Windows (37) Windows 8 (44) windows xp (2) X Box (5) yahoo (3) Yama (1) yandex (8) yaşam (2) yazı dizisi (9) yazılım (116) yeni ürün (6) Youtube (17) zararlı (3) Zuckerberg (3) Ελληνική ειδήσεις (5)