Oto procedura na skojarzenia plików:
function SetAssociation(const Ext: String; const Name, Desc, Command, Icon: String): Boolean;
var
R: TRegistry;
begin
Result := False;
R := TRegistry.Create;
try
R.RootKey := HKEY_CLASSES_ROOT;
if R.OpenKey('' + Ext, True) then
begin
R.WriteString('', Name);
R.CloseKey;
if R.OpenKey('' + Name, True) then
begin
R.WriteString('', Desc);
R.CloseKey;
if R.OpenKey('' + Name + '\shell\open\command', True) then
begin
R.WriteString('', Command);
R.CloseKey;
Result := True;
if (Icon <> '') and R.OpenKey('' + Name + '\DefaultIcon', True) then
begin
R.WriteString('', Icon);
R.CloseKey;
end;
end;
end;
end;
finally
R.Free;
end;
end;
I z niewiadomych mi przyczyn, na niektórych komputerach (systemy XP) występuje:
Access violation at address 77F5Ac7d in module 'ntdll.dll'. Write of address 00404A1D
O dziwo, na innych działa (też z XP)... co jest grane?