własne rozszerzenie

0

Stworzyłem w systemie własne rozszerzenie do własnego programu w Delphi. I mam problem z ikonką: jako ikonkę mam podane

Application.exename + ',1'

ale nie pokazuje mi ikonki na pliku, mimo że jest ta ikonka w programie. Próbowałem dać plik .ico i zmieniac cyferkę po przecinku, ale nic z tego. Co zrobić, żeby działało?
Mój kod dodawania rozszerzenia:

Wywołanie:

RegisterFileExtension('.etp', 'Pisarz_File', Application.ExeName, Application.ExeName + ',1');

Procedura:

procedure TForm1.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;
    showmessage('Rozszerzenie zostało zarejestrowane!');
  finally
    FreeAndNil(Reg);
  end;
end;
0

Spróbuj bez indexu ikony, samo exename

0

to nic nie daje

0

Musisz odświeżyć rejestr, np. resetem kompa. ;]
A najlepiej poszukaj coś o odświeżaniu Shell'a ikon.
Popatrz tez na to:
http://4programmers.net/Delphi/Gotowce/W%C5%82asne_rozszerzenie

0

Uważam,że zamiast 1 powinno być 0.
Gdyż numerowanie ikon zaczyna się od 0.
Pozdrawiam.

0

restart zadziałał. jak odświeżyć shella ikon??

0

Użyj :
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1