Rejestr

0

Rejestruję sobie rozszerzenie dla mojego programu :

procedure StworzCoTrzeba;
var
    reg : TRegistry;
begin
    Reg.RootKey := HKEY_CLASSES_ROOT;
    Reg.OpenKey('.edt', true);
    Reg.WriteString('','edt_auto_file');
    Reg.CloseKey;
    Reg.OpenKey('edt_auto_file', True);
    Reg.WriteString('', 'Moj typ pliku');
    Reg.CloseKey;
    Reg.OpenKey('edt_auto_file\shell\open\command', true);
    Reg.WriteString('', '"'+ Application.ExeName + '" "%1"');
    Reg.CloseKey;
    Reg.OpenKey('edt_auto_file\DefaultIcon', true);
    Reg.WriteString('', '"'+ Application.ExeName + ',0');
    Reg.CloseKey;
end;

Pytania :

  1. Dlaczego jak użyję tej procedury, to potem przy wychodzeniu z programu (nie od razu) wywala mi Acces Violation, ale nie w żadnym konkretnym miejscu, albo jak się uruchomi nie spod Delphi, to "Program wykonał nieprawidłową operację".
  2. Dlaczego nie przyporządkowuje mi takiej ikonydo rozszerzenia, jaką ja bym chciał, tylko takią jak ma np. command.com ?
0

A nie zapomniałeś o:

reg := TRegistry.Create;
...
reg.Free;
0

Eeeeee... zapomniałem. Ale o dziwo działało, tylko ten błąd właśnie wyskakiwał.
//DOPISANE
Może ktoś wie z tą ikoną?

0

Reg.WriteString('', '"'+ Application.ExeName + ',0');

Zapomniałeś też zamknąć cudzysłowy

0

na mój gust powinno być plus przecinek jeden.. tzn :

.ExeName + ',1');

bo taka jest scieżka do ikonki twojego programu..

0

Nie nie, 0 jest w porządku. Zrobiłem zgodnie ze wskazówką Juhasa :

Reg.WriteString('', '"'+ Application.ExeName + '",0');

i już wszystko działa.

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