![]() |
|
#1
|
|||
|
|||
![]() Короче говоря, код действует. Ассоциации заносятся в реестр, но не работают.
Код:
procedure Associate; var s:string; begin Reg:=TRegistry.Create; // создаем Reg.RootKey := HKEY_CLASSES_ROOT; // указываем корневую ветку Reg.OpenKey('.dcu\OpenWithList\', true); Reg.WriteString('TestApplication.dcu', ''); Reg.OpenKey('\TestApplication.dcu\DefaultIcon\', true); s:=Application.ExeName+',0'; Reg.WriteString('', s); Reg.OpenKey('\TestApplication.dcu\Shell\Open\', true); Reg.WriteString('', 'Открыть в TestApplication'); Reg.OpenKey('command\', true); s:='"'+Application.ExeName+'" "%1"'; Reg.WriteString('', s); Reg.Free; SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); end; Почему? |
#2
|
||||
|
||||
![]() Попробуй через InstalShield. Я тоже долго мучался, а через инсталятор все быстро и аккуратно получилось.
|
#3
|
||||
|
||||
![]() для расширения "ppc" код действует, ассоциации заносятся в реестр и работают:
Код:
uses ShlObj, Registry, var reg: TRegistry; begin try reg:=TRegistry.Create; try reg.RootKey:=HKEY_CLASSES_ROOT; reg.OpenKey('.ppc', True); reg.WriteString('', 'ppc file'); reg.CloseKey; reg.OpenKey('.ppc\shell\open\command', True); reg.WriteString('', Application.ExeName); reg.CloseKey; reg.OpenKey('.ppc\defaulticon', True); reg.WriteString('', Application.ExeName); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); finally reg.Free; end; except end; end; Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 17.04.2011 в 13:53. |