Страница 1 из 1

Ассоциация

Добавлено: 21 мар 2005, 22:45
psix
Как привязать к определенному типу файлов свою иконку, например, как это делает Опера?

Как добавить свое действие в меню, появляющееся по клику ПКМ по файлу, например, как это делает WinRAR?
Чтобы пункт меню динамически менялся в зависимости от файла и рядом с ним был мой ярлычок.
Чтоб можно было выделить несколько файлов и пути к ним передовались моей программе в качестве параметров.

Кто знает, помогите, плз. :(

Добавлено: 22 мар 2005, 19:28
YurikGL
Все это прописывается в реестре. Набери RegEdit, там есть поиск...
Как работать с реестром - в инете дофига информации.

Добавлено: 22 мар 2005, 21:27
psix
Еслиб все было так просто - сам бы нашел.
Почему-то ничего подобного в реестре я не нашел.

Простой пример:
Вводим в поиске "Добавить в архив..." или ".rar". Максимум что я нашел - как ассоциировать тип файла с приложением.

Добавлено: 26 мар 2005, 23:12
Naeel Maqsudov
Плохо искали :)

Чтобы сделать возможным создание файлов определенного типа из локального меню Создать, посмотрите как сделаны различные ShellNew

А вот чтобы добавить действия (как это делает Rar, например) одних только манипуляций с реестром мало. Обработчик действия должен быть зарегистрированным COM-сервером. Т.е. надо сначала написать свой COM-сервер. А в процедуре его регистрации\разрегистрации описать, какие действия он добавляет и как.

См. в реестре ветку
HKCR\*\Shellex

Вообще эта фишка называется shell extentions.
К ее возможностям отностятся также, напрмиер, виртуальные папки (как, например, Сетевые подключения или Панель управления). Т.е. ваш COM-сервер со своей формой будет встраиваться прямо в shell. (В Windows Explorer, напрмиер)

Добавлено: 18 июл 2005, 16:05
psix
Простите, что поднимаю старую тему %)
У меня проблема: Пункт меню, встроенный в експлорер появляется даже тогда, когда не выделенно ни одного файла (Клик по пункту "Файл" в меню наверху).
Пытался ввести дополнительную переменную, содержащую количество файлов, но это не помогло - толи меню не перерисовывается толи еще что.
Подскажите что-нибудь.