![]() |
|
| |||||||
|
| | Seçenekler |
|
#1
| |||
| | |||
Dosyaları Açacak Programı Belirlemek (Association)Çoğu Visual Basic sitelerinin forumlarında kullanıcıların Association, yani belirli bir uzantıya sahip dosyaları kendi hazırladıkları programla nasıl çalıştırabilecekleri konusunu bilmedikleri, bu konu hakkında yardım istedikleri fakat tatmin edici sonuca ulaşamadıklarını gözlemliyorum. Bu nedenle Association konusuna açıklık getirecek bu dokümanı yazıp konu ile ilgilenenlerin hizmetine sunmaya karar verdim. Öncelikle öğrenmemiz gereken en temel bilgi çoğu konunun olduğu gibi bu konunun da çözümünün Registry (Kayıt) dosyalarında yattığıdır. Dokümanın sonunda hem Association konusunu, hem de bir nebze de olsa Registry’e API kullanarak kayıt yazmayı öğreneceğiz. Örneğimize başlamamız için kendimize bir dosya uzantısı, bir de bu uzantıdaki dosyaları açacak program seçmeliyiz. Ben dokümanda örnek teşkil etmesi için dosya uzantısı olarak “.asp”, program olarak ta kendi yazdığım “ASP Anahtarı” isimli programı seçtim. İşe başlamadan önce projemizde “Registry” bir modül oluşturarak aşağıdaki API tanımlamalarını bu modül içerisine yerleştirelim ve kaydedelim. Public Declare Function RegCreateKey Lib “advapi32.dll” Alias “RegCreateKeyA” (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegOpenKey Lib “advapi32.dll” Alias “RegOpenKeyA” (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegQueryValueEx Lib “advapi32.dll” Alias “RegQueryValueExA” (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long Public Declare Function RegSetValueEx Lib “advapi32.dll” Alias “RegSetValueExA” (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Public Declare Function RegCloseKey Lib “advapi32.dll” (ByVal hKey As Long) As Long Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const REG_SZ = 1 Public Sub RegKaydiYaz(hKey As Long, Anahtar As String, DegerAdi As String, Deger As String) Dim Ac ‘Oluşturulacak anahtarın adresi RegCreateKey hKey, Anahtar, Ac ‘Anahtarı oluşturduk RegSetValueEx Ac, DegerAdi, 0, REG_SZ, ByVal Deger, Len(Deger) ‘Anahtarımızın “DegerAdi” isimli değerine “Deger” parametresi ile gelen String değeri atadık. RegCloseKey Ac ‘Ve açtığımız anahtarı kapattık. End Sub Registry isimli modülü oluşturduysanız devam edebiliriz. Dosya uzantılar ve bunları açacak programlarla ilgili bilgiler Registry’nin HKEY_CLASSES_ROOT anahtarı altında yer alırlar. Windows’un RegEdit Programını kullanarak bu anahtarı açtığımızda önümüze ilk önce dosya uzantıları sıralanır. Biz bu dosya uzantıları arasından kendi programımızla açmak istediğimiz uzantıyı buluyoruz. Eğer istediğimiz uzantı burada bulunmuyorsa hemen oluşturuyoruz. Bunun için formumuzun Load olayına aşağıdaki kodları ekleyip (isterseniz) programımızı Run>Start menüsü (ya da klavyenin F5 tuşu) ile çalıştıralım. Eğer kaydetmek istediğimiz uzantı daha önce Registry kayıtlarında mevcut ise RegEdit’i kullanarak bu kaydın değerlerini bir kenara kaydedin. Aksi halde bu işin geri dönüşü olamayabilir. Private Sub Form_Load() ‘RegKaydiYaz(hKey As Long, Anahtar As String, DegerAdi As String, Deger As String) RegKaydiYaz HKEY_CLASSES_ROOT, “.asp”, “”, “ASPAnahtari” End Sub Artık RegEdit’i açtığımızda eğer daha önceden “.asp” adında anahtar yoksa oluşturulduğunu, aksi halde varsayılan değerinin bizim atadığımız şekilde değiştiğini göreceksiniz. İsterseniz modülümüze eklediğimiz “RegKaydiYaz” isimli alt yordamın çalışma prensibini detaylı olarak işleyelim. hkey = HKEY_CLASSES_ROOT (Kayıt yapılacak anahtarın ismini bu parametre ile belirtiyoruz. Bu parametrenin değeri Long tipinde olması gerektiğinden alt yordamımız içinde Sabit değişkenle bunu daha önceden atamıştık. Diğer anahtarların Long değerlerini öğrenmek için VB 6.0 ile gelen APILoad.exe programını kullanabilirsiniz). Anahtar = “.asp” (Açtığımız anahtara alt anahtar olarak gireceğimiz değeri bu parametre ile belirtiyoruz. Dolayısıyla bu parametre programımızla birlikte açılmasını istediğimiz dosya türünün uzantısı olacak). DegerAdi = “” (Açtığımız alt anahtarın hangi isimli değerine veri ataması yapacağımızı bu parametre ile belirtiyoruz. Boş bırakmamızın sebebi varsayılan değere atama yapmamız gerektiğindendir., Deger = “ASPAnahtari” (Buraya dosya “.asp” uzantılı dosyaların hangi programla açılacağına dair bilgilerin bulunduğu anahtarın adını girmeliyiz. İstediğimiz değeri verebiliriz fakat buraya vereceğimiz değerin ayınısı ile yeni bir anahtar açıp bilgilerimizi buraya kaydetmemiz gereklidir). Uzantımızı bilgisayara tanıttığımıza göre artık program bilgilerimizi de bildirmeliyiz. Bunun için yukarıda da belirttiğim gibi “RegKaydiYaz” alt yordamının “Deger” parametresine verdiğimiz değer ile aynı isimde bir alt anahtar oluşturmalıyız. Oluşturduğumuz bu anahtarın varsayılan değeri, “.asp” uzantısına sahip dosyaların dosya türüne verilen ad olacağından burayı da istediğimiz şekilde ayarlayabiliriz. Ben bu değeri “ASP Dosyası” olarak ayarladım ama bunu yazmasaydım bile bu değer Windows’ta böyle görünecekti. Bu anahtarı eklemek için formumuzun Load olayına yazdığımız koda şu aşağıdaki satırı da ekliyoruz: RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari”, “”, “ASP Dosyası” Yukarıdaki kodu da ekleyip çalıştırdıktan sonra Registry kayıtlarında “HKEY_CLASSES_ROOT > .asp” ve “HKEY_CLASSES_ROOT > ASPAnahtari” isimlerinde iki tane alt anahtar oluştuğunu gözlemleyebilirsiniz. Şimdi en can alıcı noktaya sıra geldi. “.asp” uzantılı dosyaların Windows’ta hangi ikonla temsil edileceği ve hangi programla çalıştırılacağını belirten anahtarları ekleyeceğiz. Önce kısa olanı yapalım, ikon belirleyelim. Aşağıdaki kodu yukarıdaki diğer kodlara iliştirelim: RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\DefaultIcon”, “”, “C:\Windows\ASPAnahtari.exe,3″ Projemizi şimdi çalıştıracak olursak “HKEY_CLASSES_ROOT > ASPAnahtari” isimli anahtarın altına “DefaultIcon” isminde bir anahtar daha eklendiğini göreceksiniz. Bu anahtarın varsayılan değeri ise “.asp” uzantılı dosyalarımızın kendilerini temsil eden ikonu nereden alacakları sorusuna cevap olacaktır. Yukarıdaki kodla bunu “C:\Windows\” dizininde bulunan “ASPAnahtari.exe” isimli programın içerdiği 3 nolu ikon olarak belirledim. Siz istediğiniz programın istediğiniz ikonunu kullanabilirsiniz. Tek yapmanız gereken programın yerini, adını ve kullanacağınız ikon numarasını örnekte görüldüğü gibi eklemek. İkonu da eklediğimize göre artık dosyalarımızı çalıştıracak programın yerini de tarif edebiliriz. Bunu yapmak için yine “HKEY_CLASSES_ROOT > ASPAnahtari” anahtarının altına ”Shell” isminde, varsayılan değeri boş bir anahtar daha açmalıyız. RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\Shell”, “”, “” Tek başına bir şey ifade etmediği için buna değer atamaya ve üzerinde durmaya gerek yok. Sadece bundan sonra kalan iki anahtarı bu anahtarın altında açmamız gerekiyor. Sıradaki Anahtarımızın adı “Open” ve az önce de belirttiğim gibi bu anahtarı “HKEY_CLASSES_ROOT > ASPAnahtari > Shell” anahtarının altına açıyoruz. RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\Shell\Open”, “”, “ASPAnahtarı ile Aç” “Open” anahtarının varsayılan değeri, dosyamızın üzerinde sağ tıklandığında açılan menüde en üstte bulunan seçeneğe de ismini verecektir. Boş bırakırsak bu klasik “Aç” olacaktır. Artık son hamleyi de yapıp işimizi bitirebiliriz. Bunun için “HKEY_CLASSES_ROOT > ASPAnahtari > Shell > Open” anahtarı altına “Command” isminde yeni bir anahtar açmalıyız. Bu anahtarın varsayılan değerine atayacağımız ifade “.asp” uzantılı dosyalarımızı çalıştıracak programın fiziksel yolu olmalıdır. RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\Shell\Open\Command”, “”, “C:\Windows\ASPAnahtari.exe” Bunu da yukarıdaki kodlara eklediğimizde elimizdeki kod aşağıdaki gibi olacaktır: Private Sub Form_Load() ‘RegKaydiYaz(hKey As Long, Anahtar As String, DegerAdi As String, Deger As String) RegKaydiYaz HKEY_CLASSES_ROOT, “.asp”, “”, “ASPAnahtari” RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari”, “”, “ASP Dosyası” RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\DefaultIcon”, “”, “C:\Windows\ASPAnahtari.exe,3″ RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\Shell”, “”, “” RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\Shell\Open”, “”, “ASPAnahtarı ile Aç” RegKaydiYaz HKEY_CLASSES_ROOT, “ASPAnahtari\Shell\Open\Command”, “”, “C:\Windows\ASPAnahtari.exe” End Sub Bu kodlarla Registry’de oluşturduğumuz anahtarlar ise: HKEY_CLASSES_ROOT > .asp HKEY_CLASSES_ROOT > ASPAnahtari HKEY_CLASSES_ROOT > ASPAnahtari > DefaultIcon HKEY_CLASSES_ROOT > ASPAnahtari > Shell HKEY_CLASSES_ROOT > ASPAnahtari > Shell > Open HKEY_CLASSES_ROOT > ASPAnahtari > Shell > Open > Command Bundan sonra tüm “.asp” uzantılı dosyalar açılmak için bizim programımızı kullanacaktır. Eğer “.asp” uzantılı dosyalarımız daha önceden başka bir programla çalışıyorsa ve bu programı iptal etmeden kendi programımızı alternatif olarak sunmak istersek tek yapmamız gereken “Shell” anahtarının altına, “Open” anahtarı ile aynı özelliklerde, ismini kendi belirleyeceğimiz başka bir anahtar eklemek olacaktır. Böylece hem “.asp” uzantılı dosyalar daha önce çalıştıkları programla, hem de kullanıcının seçimine bağlı olarak bizim programımızla çalışacaktır. Bu da bir örnekle şöyle açıklanabilir: HKEY_CLASSES_ROOT > .asp HKEY_CLASSES_ROOT > ASPAnahtari HKEY_CLASSES_ROOT > ASPAnahtari > DefaultIcon HKEY_CLASSES_ROOT > ASPAnahtari > Shell HKEY_CLASSES_ROOT > ASPAnahtari > Shell > Open HKEY_CLASSES_ROOT > ASPAnahtari > Shell > Open > Command HKEY_CLASSES_ROOT > ASPAnahtari > Shell > ASPAnahtarı HKEY_CLASSES_ROOT > ASPAnahtari > Shell > ASPAnahtarı > Command |
![]() |
| Arama Etiketleri: acacak, association, belirlemek, dosyalari, programi |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konu Açanlar | Forum | Cevaplar | Güncel Mesajlar |
| vbulletine konu açacak bot yada yüksek üyeli db gerekli | yolcu_34 | Script Satış | 1 | 12-04-2008 12:38 |
| Hosting Karşılığı Konu Açacak Eleman ? | diviksor | Eleman Arayanlar | 0 | 14-03-2008 12:59 |
| Sitenin Çevrimdışı Gösterilmemesi,Sayfanın Yenilenmesini Sağlamak,Linklerin gideceği yeri belirlemek,Sayfa Geçiş Efekt | kadınca | Web Dersleri | 0 | 08-02-2008 07:02 |
| İran 9 yeni nükleer santral için ihale açacak | Celebrian | Haberler | 0 | 24-12-2007 04:33 |
| Çocukların acısı Batı Şeria'yı denize açacak | kadınca | Haberler | 0 | 13-11-2007 06:40 |
![]() | ![]() |