|
C# ile kendi dosya türümüzü oluşturalım
|
|
03-23-2008, 11:25 AM
Mesaj: #1
|
|||
|
|||
|
C# ile kendi dosya türümüzü oluşturalım
Giriş
Merhaba, Bu yazımızda C sharp kullanarak kendi dosya türlerimizi windows' a nasıl tanıtacağımızı ve kendi uygulamalarımıza özel dosya türlerini nasıl oluşturacağımızı öğreneceğiz. Bu makaleyi yazmaya değerli arkadaşım Burak Yiğit KAYA nın kayıt defteri yazı dizisini okuduktan sonra karar verdim. Hepinizin bildiği gibi her uygulamanın kendisine özel dosya türleri vardır, notepad text dosyaları ile çalışır, flash .fla uzantılı dosyalarla çalışır vb, kendi yazdığınız programında kendine özel bir dosya türü olmasını, bu tip dosyaların windows tarafından her zaman sizin uygulamanız ile açılmasını istiyorsanız windows' un kayıt defteri Registry ile haşır neşir olmanız gerekiyor. C sharp registry işlemleri yapabilmemiz için bize Microsoft.Win32 namespace ini sunmaktadır. Registry ve RegistryKey sınıfları Microsoft.Win32 namespace' i içerisinde bulunan Registry ve RegistryKey classları bize kayıt defteri üzerinde istediğimiz işlemleri yapmayı sağlamaktadır. Registry sınıfı, registry içerisindeki anahtarlara erişebilmemiz için bize aşağıdaki özellikleri sunar;
RegistryKey sınıfının en çok kullanılan metodları ve yaptıkları işler ise şöyledir;
Örnek uygulama 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 uzantisi const 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 yapilandiriyoruz if(!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 yaratabiliriz if(!isExists(regKey,regIdentifier)) { subKey = regKey.CreateSubKey(regIdentifier); //dosyamizin bilgilerinde gorunecek turunu yaziyoruz subKey.SetValue("","Kendi dosya türümüz"); //varsayilan iconu seciyoruz RegistryKey defaultIco = subKey.CreateSubKey("DefaultIcon"); defaultIco.SetValue("",iconPath); defaultIco.Close(); //shell anahtarini belirliyoruz RegistryKey shellKey = subKey.CreateSubKey("shell"); shellKey.SetValue("","open"); //shell keyi altina, open keyini tanimliyoruz RegistryKey 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 denetliyoruz if(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. Böylece C:\ içerisinde deneme.abc adında bir dosyamız oluşturulmuş olacak. 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. 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.Hepinize kolay gelsin. |
|||
|
|
|
|
|
C# ile kendi dosya türümüzü oluşturalım ,C# ile kendi dosya türümüzü oluşturalım indir,C# ile kendi dosya türümüzü oluşturalım yükle,C# ile kendi dosya türümüzü oluşturalım download,C# ile kendi dosya türümüzü oluşturalım indirmek istiyorum,C# ile kendi dosya türümüzü oluşturalım yükle,C# ile kendi dosya türümüzü oluşturalım bedava, C# ile kendi dosya türümüzü oluşturalım İNDİR,C# ile kendi dosya türümüzü oluşturalım YÜKLE,C# ile kendi dosya türümüzü oluşturalımfree,C# ile kendi dosya türümüzü oluşturalımyukle,C# ile kendi dosya türümüzü oluşturalımİndir,C# ile kendi dosya türümüzü oluşturalımdownload,C# ile kendi dosya türümüzü oluşturalıminndir,C# ile kendi dosya türümüzü oluşturalım Dvdrip,C# ile kendi dosya türümüzü oluşturalım filmi indir,C# ile kendi dosya türümüzü oluşturalımonline izle,C# ile kendi dosya türümüzü oluşturalımsuper film,C# ile kendi dosya türümüzü oluşturalımbedava insit |
| Benzeyen Konular | |||||
| Konu: | Yazar | Cevaplar: | Görüntüleyenler: | Son Mesaj | |
| Delphi - Dosya Arama Fonksiyonları | Sadness | 0 | 34 |
03-23-2008 11:20 AM Son Mesaj: Sadness |
|







![[Resim: 400]](http://www.byte.com.tr/includes/resimgoster.jpeg/Resim/33/En/400)
![[Resim: 400]](http://www.byte.com.tr/includes/resimgoster.jpeg/Resim/34/En/400)
![[Resim: 400]](http://www.byte.com.tr/includes/resimgoster.jpeg/Resim/35/En/400)


