Saját kiterjesztés

Szeretnéd, hogy a programodhoz saját kiterjesztésü fájlok kapcsolódjanak? Úgy, mint a Winamp-hoz az mp3-as fájlok? Nem egy ördöngős dolog egy fájl kiterjesztését magadra irányítani, bár a windows fennállása óta már 3x változtatták, a w95, w98, w98me, w2000, w2000xp -n biztosan menni fog. Ha jobban megnézed a kódot, akkor feltünhet, hogy 2x-esen bebiztosítottam.

uses
Registry...

{$R *.DFM}

function hozzarendeles(kiterjesztes,path:string;ikon_szama:integer):boolean;
var
reg:Tregistry;
s:string;
begin
s:='xakk_'+copy(kiterjesztes,2,length(kiterjesztes)-1);
reg:=Tregistry.create;
reg.RootKey := HKEY_CLASSES_ROOT;
reg.OpenKey(kiterjesztes,true);
reg.WriteString('',s);
reg.OpenKey('shell\open\command',true);
reg.WriteString('','"'+path+'"'+' "%1"');
reg.CloseKey;
reg.OpenKey(kiterjesztes+'\Defaulticon',true);
reg.WriteString('',path+','+inttostr(ikon_szama));
reg.CloseKey;
reg.CloseKey;
reg.OpenKey(s + '\shell\open\command',true);
reg.WriteString('','"'+path+'"'+' "%1"');
reg.CloseKey;
reg.OpenKey(s+'\Defaulticon',true);
reg.WriteString('',path+','+inttostr(ikon_szama));
reg.CloseKey;
form1.caption:=path;
reg.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
hozzarendeles('.ziz','d:\papa.exe',0);
end;

end.

 

 

Megjegyzés:
Na ja! A fenti *.ziz kiterjesztésü fájlt már magadra irányítottad, de a d:\papa.exe nevü programodnak ezt fel is kell fogni valahogy:

procedure TForm1.FormCreate(Sender: TObject);
var
a:integer;
begin
for a:=0 to paramcount do if paramcount<>0 then
listbox1.Items.Add(paramstr(a));
end;

Még az előzőkhöz annyit, hogy:
hozzarendeles('.ziz','d:\papa.exe',0);
ahol a 0 az exe-ben tárolt ikon sorszáma!