własne rozszerzenie

Odpowiedz Nowy wątek
2007-10-06 00:44

Rejestracja: 14 lat temu

Ostatnio: 10 lat temu

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;

Pozostało 580 znaków

2007-10-06 01:43

Rejestracja: 15 lat temu

Ostatnio: 5 lat temu

0

Spróbuj bez indexu ikony, samo exename

Pozostało 580 znaków

2007-10-06 02:04

Rejestracja: 14 lat temu

Ostatnio: 10 lat temu

0

to nic nie daje

Pozostało 580 znaków

2007-10-06 09:23

Rejestracja: 14 lat temu

Ostatnio: 2 lata temu

Lokalizacja: Helsingør / FZ

0

Musisz odświeżyć rejestr, np. resetem kompa. ;]
A najlepiej poszukaj coś o odświeżaniu Shell'a ikon.
Popatrz tez na to:
Własne rozszerzenie

Pozostało 580 znaków

2007-10-06 09:45

Rejestracja: 12 lat temu

Ostatnio: 6 miesięcy temu

0

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

Pozostało 580 znaków

2007-10-06 11:31

Rejestracja: 14 lat temu

Ostatnio: 10 lat temu

0

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

Pozostało 580 znaków

2007-10-06 11:37

Rejestracja: 12 lat temu

Ostatnio: 6 miesięcy temu

0

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

Pozostało 580 znaków

Odpowiedz

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