Показать сообщение отдельно
  #1  
Старый 29.08.2022, 21:45
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Программная ассоциация файлов с моей программой

Есть программа, хочу что бы определённые расширения файлов, по двойному клику по ним, открывались в моей программе.
В ручную это - пкм по файлу, свойства, вкладка общее, кнопка изменить и выбор программы..

В программе есть лист бокс, в нем я записываю все расширения, которые должны открываться в моей программе.
По кнопке происходит цикл и расширения ассоциируются с программой.

Проблема в автоматической ассоциации..
Знаю что в реестре, знаю что это не в HKEY_CLASSES_ROOT
а HKEY_CURRENT_USER\Software\Classes\
Только вот ничего не получается, расширения не ассоциируются с программой.

Помогите, что делаю не так?
Код:
Function asss(Const Ext, ExeName: String): Boolean;
begin
  with TRegistry.Create do
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKey('\Software\Classes\.'+ Ext, TRUE) then
        WriteString('', ExeName);
      if OpenKey('\Software\Classes\ProText', TRUE) then
        WriteString('', 'My Very Own Text File Type');
      if OpenKey('\Software\Classes\ProText\DefaultIcon', TRUE) then
        WriteString('', ExtractFilePath(ParamStr(0)) + ExeName);
      if OpenKey('\Software\Classes\ProText\shell\open\command', TRUE) then
        WriteString('', ExtractFilePath(ParamStr(0)) + ExeName + '"%1"');
    finally
      Free;
    end;
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
end;

зы ProText - название exe моей программы
win7 64, delphi 10.3
Ответить с цитированием