Главная страница
    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.47 MB
Время: 0.031 c
2-1155419712
ronyn
2006-08-13 01:55
2006.09.03
pchar pansichar


2-1154659052
Яков
2006-08-04 06:37
2006.09.03
Boolean поле


6-1145516974
111qwe
2006-04-20 11:09
2006.09.03
Определение IP адреса подключенного клиента


15-1154854443
Kerk
2006-08-06 12:54
2006.09.03
Проблема с аськой


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский