Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



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


3-1151323751
Sirus
2006-06-26 16:09
2006.09.03
Прямой доступ к DBF файлам в Delphi 2006


2-1155583415
RASkov
2006-08-14 23:23
2006.09.03
В классе ссылка на класс


15-1154884046
AntiUser
2006-08-06 21:07
2006.09.03
Физика движения объектов и гравитация.


3-1151066783
barakuda
2006-06-23 16:46
2006.09.03
Умный combobox + table




   Наверх