Rejestracja własnego rozszerzenia
Misiekd
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.
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.
oj art się zdezaktualizował:/ teraz potrzeba sprawdzania i nadawania praw zapisu do rejestru. Przydał by się dopisek do tego arta..
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" =]
@Sasser.64 patrz IContextMenu
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 :(
A gdzie pisze że do uses trzeba dopisać Registry??
Mnich TT to może linka podaj bo nie znalazłem
y.. to już było 4356 lat temu
o_O bardzo ciekawy pomysł i bardzo przydatne. Brawo