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

Вниз

Реестр   Найти похожие ветки 

 
vain ©   (2006-08-13 23:09) [0]

Объясните мне, пожалуйста, как происходит открытие файла, сассоциированного с каким-л. приложением?
Насколько я понимаю это происходит так:
1. В HKСR\ ищется расширение открываемого файла (н-р. .ext).
2. В HKCR\.ext смотрится значение default (н-р. somefile).
3. Из HKCR\somefile\shell\open\command\default берётся образец командной строки...
Ничего не напутал?
Вот тут начинаются вопросы...
I. По каким правилам строится этот образец командной строки?
II. Почему если я меняю значение параметра HKCR\Winapm.file\shell\open\command\default с "C:\Program Files\Winamp\winamp.exe" "%1" на "C:\Program Files\Light Alloy\LA.exe" "%1", то всё равно запускается winamp?


 
PSPF2003 ©   (2006-08-14 09:22) [1]

Я давно программку писал, задавал ассоциацию с файлом, вот гляди разбирайся.

var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(".NFO" , True);
Reg.WriteString("", "MSInfo.Document");
Reg.CloseKey;

Reg.CreateKey("NFO"+"file_cyd");
Reg.OpenKey("MSInfo.Document\DefaultIcon", True);
Reg.WriteString("", Application.ExeName + ",0");
Reg.CloseKey;
Reg.OpenKey("MSInfo.Document\shell\open\command", True);
Reg.WriteString("", Application.ExeName + " "%1"");
Reg.CloseKey;
Reg.Free;
MessageBox(Application.Handle, "Для вступления изменений в силу перезагрузите комп !", "Внимание", 0)


 
vain ©   (2006-08-14 11:05) [2]

Что такое ключ <расширение файла>+"file_cyd"? И почему он создается и туда ничего не записывается?
Это что, оказывается при запуске файла виндовз не каждый раз лазит в реестр, а хранит эти данные ещё где-то? Это я к тому что комп перезагружать надо?


 
PSPF2003 ©   (2006-08-14 11:10) [3]

Комп перегружать нет необходимости.
file_cyd это я насколько понял краткое описание, NFO это файлы с расширением *.NFO
Вин КАЖДЫЙ раз лезет в реестр


 
vain ©   (2006-08-14 11:30) [4]

Странно это всё...
Какое же это описание, если там ничего не описывается?
А на II ответить сможешь?


 
PSPF2003 ©   (2006-08-14 11:34) [5]


> А на II ответить сможешь?


> Какое же это описание, если там ничего не описывается?

Смотри открываем Редактор реестра переходим например на .txt
В поле Content Type идет описание


 
PSPF2003 ©   (2006-08-14 11:36) [6]

II не пойму вопроса


 
vain ©   (2006-08-14 12:56) [7]

Короче, объясняю свою проблему подробно.
Ставлю FastStoneImageViewer (c IrfanView тоже самое), ассоциирую его с .jpg - jpg открывается с помощью FastStone. Потом пытаюсь сассоциировать jpg с собственным viewer"ом. Ничего не получается. При написании пользовался книгой «Delphi глазами ][акера» Михаила Фленова. Так вот даже его прога из примеров для бээмпэх  не работает!
Причём в реестр всё прописывается. Никаких Reg Protector"ов у меня не стоит.
Вывод: значит FastStone и IrfanView прописывают инфу о ассоциировании ещё где-то, а где?.. А если даже удалить ключ HKCR\.jpg, то джипеги всё равно открываются с помощью FastSton"a. Вот такая проблема.


 
vain ©   (2006-08-14 12:57) [8]

Подскажите, кто-нибудь что-нибудь - очень интересно!


 
vain ©   (2006-08-14 12:59) [9]

Текст из программы Фленова:
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(".BMP" , True);
Reg.WriteString("", "BMPfile");
Reg.CloseKey;

Reg.CreateKey("BMP"+"file_cyd");
Reg.OpenKey("BMPfile\DefaultIcon", True);
Reg.WriteString("", Application.ExeName + ",0");
Reg.CloseKey;
Reg.OpenKey("BMPfile\shell\open\command", True);
Reg.WriteString("", Application.ExeName + " "%1"");
Reg.CloseKey;
Reg.Free;


 
clickmaker ©   (2006-08-14 13:21) [10]

SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);


 
vain ©   (2006-08-14 14:08) [11]


> SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
>
>

Что это такое?


 
clickmaker ©   (2006-08-14 14:16) [12]


> Что это такое?

это для извещения винды, что ты поменял ассоциацию


 
vain ©   (2006-08-14 14:30) [13]


> это для извещения винды, что ты поменял ассоциацию

...я уже начинаю понимать...
Но зачем её об этом извещать, если она при каждом запуске файла лезет в реестр? Или всё-таки не при каждом? И как Фленов мог про это забыть? Хотя его способ работает, чтобы установить ассоциацию, но не изменить.


 
vain ©   (2006-08-14 14:30) [14]


> это для извещения винды, что ты поменял ассоциацию

...я уже начинаю понимать...
Но зачем её об этом извещать, если она при каждом запуске файла лезет в реестр? Или всё-таки не при каждом? И как Фленов мог про это забыть? Хотя его способ работает, чтобы установить ассоциацию, но не изменить.



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

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

Наверх




Память: 0.5 MB
Время: 0.039 c
15-1154452246
Kerk
2006-08-01 21:10
2006.09.03
Есть тут мастаки из Казани?


2-1155378908
Yegorchic
2006-08-12 14:35
2006.09.03
BlockRead, BlockWrite...


15-1154963169
GeLLeR
2006-08-07 19:06
2006.09.03
Для тех, кто играл в NFS Most Wanted


2-1155310398
Demand
2006-08-11 19:33
2006.09.03
Внешний IP


15-1155148972
мыслитель
2006-08-09 22:42
2006.09.03
Спрятать процесс