Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

Дерегистрация типа файла в системе   Найти похожие ветки 

 
Deedlit   (2004-08-04 14:22) [0]

Нужно регистрировать некоторые типы файлов в системе за приложением. Написала следующие процедуры:

{ Процедура регистрирует тип файлов. }
procedure TMainForm.RegisterScriptType(Extension: string);
 var
 Registry: TRegIniFile;
begin
 Registry:=TRegIniFile.Create;
 try
 With Registry do begin
   RootKey:=HKEY_CLASSES_ROOT;
   WriteString("."+Extension,"", "My.Application");
   end;
 finally
 Registry.Free;
 end;
end;


procedure TMainForm.UnregisterScriptType(Extension: string);
 var
 Registry: TRegIniFile;
begin
 Registry:=TRegIniFile.Create;
 try
 With Registry do begin
   RootKey:=HKEY_CLASSES_ROOT;
   EraseSection("."+Extension);
   end;
 finally
 Registry.Free;
 end;
end;


При запуске программа заносит в реестр собственно ветку My.Application:

 With Registry do begin
   RootKey:=HKEY_CLASSES_ROOT;
   WriteString("My.Application", "", "My File");
   WriteString("My.Application\DefaultIcon", "", Application.ExeName+",0");
   WriteString("My.Application\Shell", "", "DefaultOpen");
   WriteString("My.Application\Shell\DefaultOpen", "", "Открыть");
   WriteString("My.Application\Shell\DefaultOpen\command", "", """+Application.ExeName+"" "%1"");
   end;


Регистрация проходит нормально. Попытка дерегистрации ничего не даёт - ключ удаляется, но система (WXP) упорно продолжает использовать это приложение для открытия файла. Откуда она знает, как это делать - непонятно: связь-то удалена. :(

Кто-нибудь знает, в чем проблема? Не помогает ни перезагрузка, ни SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, nil, nil) - которая, по идее, должна обновить файловые ассоциации. :(


 
Sergey Kaminski ©   (2004-08-04 14:26) [1]

Поищи после деинсталяции по реестру на предмет своего расширения. Может XP его где-то еще пишет после первого запуска программы с файлом.


 
Андрей Сенченко ©   (2004-08-04 14:27) [2]

А поиск этого расширения в регистре ничего больше не дает ?
Может в XP еще где связи остаются ?

Чисто предположение.


 
Deedlit   (2004-08-04 15:42) [3]

Разгребла проблему. В общем, процедуры свою задачу выполняют полностью, а дополнительные ассоциации (прописываются в недрах HKEY_LOCAL_MACHINE и HKEY_CLASSES_ROOT, в тамошней ветке Explorer и т.п.) возникают при «ручной» привязке типа файла приложению. Чистить всю эту лабуду программно - врагу не пожелаю.

Всем большое спасибо за советы, помогло. :)

P.S. Уважаемая администрация, в WinAPI эта тема никакого отношения не имеет. ;)


 
panov ©   (2004-08-04 16:35) [4]

>Deedlit   (04.08.04 15:42) [3]

Может тема имеет отношение к программированию в Delphi?
Сильно сомневаюсь.

Ветка относится к теме "Работа с системой".



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.072 c
9-1085000153
feanor
2004-05-20 00:55
2004.09.19
НАРОД подскажите как создать клон БК(очень нужо)


4-1090924744
andrey__
2004-07-27 14:39
2004.09.19
Чтение и запись в СОМ порт


1-1094189174
jenbond
2004-09-03 09:26
2004.09.19
Недостаточно памяти


14-1093947617
Delirium
2004-08-31 14:20
2004.09.19
Теперь, посылая кого-нибудь, вы точно знаете куда он пойдёт :)


8-1088135797
OFF
2004-06-25 07:56
2004.09.19
Альтернатива TCanvas и указателям?