Programowanie w języku Delphi » FAQ

Rejestracja własnego rozszerzenia

  • 2008-06-19 20:10
  • 9 komentarzy
  • 604 odsłony
  • Oceń ten tekst jako pierwszy
Przed użyciem tej funkcji do sekcji uses trzeba dopisać Registry

uses
  Registry;



procedure RegisterFileExtension(Ext, Name, ProgramName, Icon: string);
var
  Reg: TRegistry;
begin
  if Ext[1] <> '.' then
    Ext := '.' + Ext;
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    Reg.OpenKey(Ext, True);
    Reg.WriteString('', Name);
    Reg.CloseKey;
    Reg.OpenKey(Name + '\shell\open\command', True);
    Reg.WriteString('', '"' + ProgramName + '" "%1"');
    Reg.CloseKey;
    Reg.OpenKey(Name + '\DefaultIcon', True);
    Reg.WriteString('', Icon);
    Reg.CloseKey;
  finally
    FreeAndNil(Reg);
  end;
end;


Przykład:
RegisterFileExtension('.my_ext', 'My_Extension_File', Application.ExeName, Application.ExeName + ',0')



procedure UnRegisterFileExtension(Ext: string);
var
  Reg: TRegistry;
  Name: string;
begin
  if Ext[1] <> '.' then
    Ext := '.' + Ext;
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey(Ext, False) then
    begin
      Name := Reg.ReadString('');
      Reg.CloseKey;
      Reg.DeleteKey(Name);
    end;
    Reg.DeleteKey(Ext);
  finally
    FreeAndNil(Reg);
  end;
end;


Przykład:
UnRegisterFileExtension('.my_ext');


Uwagi: Funkcji nie sprawdzają, czy podano poprawne wartości parametrów. Wyjątkiem jest sprawdzanie, czy na początku rozszerzenia jest kropka.

9 komentarzy

Legalnl 2011-11-03 14:03

co do praw rejestru to musisz nadac je aplikacji a nie funkcji, poczytaj o Manifest-ach, zresztą to nie ma być uniwersalny gotowiec który odpowiada na wszystkie pytania. macie tutaj napisane jak rejestrowac rozszerzenie reszte myśleć sami, co z Was za programiści. Przeciez tak naprawdę zarejestrować rozszerzenie to można samemu napisać w kilka linijek.

Ranma 2009-04-10 13:33

oj art się zdezaktualizował:/ teraz potrzeba sprawdzania i nadawania praw zapisu do rejestru. Przydał by się dopisek do tego arta..

Potwoor_ 2008-06-20 06:30

bueeah =D cóż za odkrycie =) ja sobie kiedyś ręcznie pogrzebałem w rejestrze i z ikonek dysków znikło mi "Otwórz" i "Exploruj" oraz umożliwiłem uruchamianie się exe'ków z rozszerzeniem ".ble" =]

reichel 2008-06-19 22:23

@sasser.64  patrz IContextMenu

xc1024 2008-05-25 22:21

a jak sie na przyklad dodaje pozycje do menu shellowego, a potem z tej pozycji otworzyć podmenu? przydaloby mi sie cos takiego ale nie wiem jak zrobic :(

lukasz1235 2007-10-27 19:24

A gdzie pisze że do uses trzeba dopisać Registry??

Misiekd 2006-10-21 01:05

Mnich TT to może linka podaj bo nie znalazłem

Mnich TT 2006-10-19 06:47

y.. to już było 4356 lat temu

angel2953 2006-10-19 01:49

o_O bardzo ciekawy pomysł i bardzo przydatne. Brawo