Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Реестр [D7, XP]


vain ©   (2006-08-13 23:09:00) 

Объясните мне, пожалуйста, как происходит открытие файла, сассоциированного с каким-л. приложением?
Насколько я понимаю это происходит так:
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?


vain   (2006-08-14 14:30:00) [1]


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

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


vain   (2006-08-14 14:30:00) [2]


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

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


clickmaker   (2006-08-14 14:16:00) [3]


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

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


vain   (2006-08-14 14:08:00) [4]


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

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


clickmaker   (2006-08-14 13:21:00) [5]

SHChangeNotify( SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);


vain   (2006-08-14 12:59:00) [6]

Текст из программы Фленова:
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;


vain   (2006-08-14 12:57:00) [7]

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


vain   (2006-08-14 12:56:00) [8]

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


PSPF2003   (2006-08-14 11:36:00) [9]

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


PSPF2003   (2006-08-14 11:34:00) [10]


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


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

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


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

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


PSPF2003   (2006-08-14 11:10:00) [12]

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


vain   (2006-08-14 11:05:00) [13]

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


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

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

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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо