Текущий архив: 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.47 MB
Время: 0.031 c