Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
2-1155280014
D@Nger
2006-08-11 11:06
2006.09.03
Как узнать расширение файла по его имени?


2-1155202342
ArtemESC
2006-08-10 13:32
2006.09.03
PopupMenu


2-1155242845
Ryan_12
2006-08-11 00:47
2006.09.03
как развить алгоритм


2-1155641597
Zilog
2006-08-15 15:33
2006.09.03
Как в ListBox программно поменять цвет выделенной строчки?


2-1155553476
ArtemESC
2006-08-14 15:04
2006.09.03
Как убрать Beep при Application.MessageBox...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский