Dosya tipini windows'a nasıl kaydettiriyorlar?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
delphiibo
Üye
Mesajlar: 72
Kayıt: 27 Eki 2005 04:55
Konum: istanbul
İletişim:

Dosya tipini windows'a nasıl kaydettiriyorlar?

Mesaj gönderen delphiibo »

Merhaba. Ben bir program yaptım. Bu programımda bir dosya kaydettikten sonra bu dosyayı tıkladığımda benim programımla nasıl açabilirim? Kaydettiğimiz dosyada benim iconmdan olmasını istiyorum.Aşağıdaki yöntemi denedim. Ama istediğim simgeyi seçemiyorum. Yardım edenlere şimdiden teşekkürler.

Kod: Tümünü seç

//alıntıdır.
procedure RegisterExtension(const sExt, sDesc, AppPath: string);
  begin
    with TRegistry.Create do
      try
        RootKey := HKEY_CLASSES_ROOT;
        if OpenKey(sExt, True) then begin
          WriteString('', sDesc);
          CloseKey;
        end;
        if OpenKey('\' + sDesc, True) then begin
          WriteString('', sDesc);
          CloseKey;
        end;
        if OpenKey('DefaultIcon', True) then begin
          WriteString('', AppPath + ',' + IntToStr(0));
          CloseKey;
        end;
        if OpenKey('\' + sDesc + '\Shell\Open\Command', True) then begin
          WriteString('', '"' + AppPath + '" "%1"');
          CloseKey;
        end;
      finally
        Free;
      end;
  end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  RegisterExtension('.den', 'Deneme Dosyasi', 'C:\windows\notepad.exe')
end;
Onun tek dostu Allah
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

kod doğru gibi gözüküyor..

örnekteki C:\windows\notepad.exe,0 kullanımı istediğin uzantıların notepad logosu olacağını belirtiyor..

not: registry ile ilgili işlemlerde explorer ı restart ederek yada aşağıdakini uygulayarak değişiklikleri anında görebilirsin..
viewtopic.php?p=62554#62554
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Ben DivXTurk 1.6 serisi projemde, kendine özel veritabanı uzantısı ve iconu kullanıyorum.

- İki sorum ve dört ihtimalli cevap şeklinde çözümlerim olacak. Tümü tarafımdan denenmiştir.

1. Herhangi bir EXEPacker ile projenizin exe'sini sıkıştırıyor musunuz ? Cevap evet ise icon ve groupicon'ların sıkıştırılmasını disable edin. :idea:

2. Atamasını yaptığınız uzantıda dilediğiniz değil de programın kendi iconu mu görünüyor ? Cevap evet ise iki ihtimal vardır.

a. Resource'daki yanlış index seçiliyor demektir.

Kod: Tümünü seç

        if OpenKey('DefaultIcon', True) then begin 
          WriteString('', AppPath + ',' + IntToStr(0)); 
          CloseKey; 
        end; 
- Bu kodda IntToStr(0) dediğiniz şey icon'un resource indexdeki sıra numarasıdır. Bunu 1,2,3 şeklinde değiştirerek deneme yapın.

b. Program iconu Resource'larda değerlendirilirken A..Z sıralamasına tabi tutuluyor. Program iconu öncelikli kalsın, diğer icon ikincil kalsın istiyosanız Resource adi olarak M'den daha büyük bir harf seçin. Ben X01, X02 olarak adlandırıyorum ki M'den sonra gelsin. Gerekçesi Application Icon'u = MAINICON ismiyle anılıyor ve bundab sonra gelecek isimler ASCII index olarak bu isimden büyük olmalı. :idea:
Resim
Resim ....Resim
Cevapla