Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Explorer Shell Extension, Как создать свой пункт меню в Explorer ? 
:(
    Опции темы
Marsianin
  Дата 19.11.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 48
Регистрация: 24.11.2004

Репутация: нет
Всего: нет



У кого-нибудь есть код, как добавить свой пункт меню на любой тип файла в Explorer Shell ?
Т.е. хочется, чтобы по правому клику на ЛЮБОМ файле в меню был мой пункт - "надёжно стереть файл".

Нашёл много примеров, но они все на BCB, а хочется на Delphi.
PM MAIL   Вверх
Ciber SLasH
Дата 19.11.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



Дык главное знать принцип, а код не проблема...

Принцип:
Цитата
Как ассоциировать какие-либо файлы с какой-нибудь прогой:

Открываем ветвь HKEY_CLASSES_ROOT. Создаём раздел например “.doc”. Значение параметра "(По умолчанию)" определяет тип файла для данного расширения и указывает на имя раздела, где этот тип описан (разные расширения могут относиться к одному и тому же типу). Теперь в той же ветви реестра ищем указанный раздел. Значение параметра "(По умолчанию)" этого раздела определяет имя типа файла, которое отображается в Проводнике. Значение параметра "(По умолчанию)" подраздела "DefaultIcon" определяет иконку для данного типа файла. Открыв последовательно подразделы "shell", "open" и "command", доберёмся до параметра "(По умолчанию)", который определяет программу, запускаемую при открытии файла данного типа. Если в подразделе "shell" создать ещё какой-то подраздел, например, "WordPad", то его имя станет присутствовать в контекстном меню файла данного типа, раскрывающегося при щелчке правой кнопки мыши на файле. Создав в этом подразделе подраздел "command" и присвоив его параметру "(По умолчанию)" в качестве значения полное имя определённой программы, например:
"C:\Program Files\Accessories\WORDPAD.EXE" "%1"
Таким образом, вы можете изменять параметры уже имеющихся типов файлов, а можете создать новый тип и связать с ним желаемые расширения имён файлов.

-------------------------------------------------------------------

Добавление пункта меню к DLL-файлам:

[HKEY_CLASSES_ROOT\dllfile\shell\Open with eXeScope\Command]
@="E:\\Program Files\\Resource Editors\\eXeScope\\EXESCOPE.exe %1"

параметр "(По умолчанию)" эквивалентен "@".
PM   Вверх
Marsianin
Дата 19.11.2005, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 48
Регистрация: 24.11.2004

Репутация: нет
Всего: нет



Это совсем не то. Как ассоциировать расширение файла на себя я знаю.
А тут надо добавить ПУНКТ В МЕНЮ при правом клике на ЛЮБОМ файле с ЛЮБЫМ расширением.
Это делается через COM.
PM MAIL   Вверх
p0s0l
Дата 20.11.2005, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Ключик умножения '*', т.е. HKEY_CLASSES_ROOT\*\ShellEx
А также в Delphi есть примерчик
http://forum.vingrad.ru/index.php?showtopic=49054


--------------------
С уважением, г-н Посол.
PM   Вверх
Marsianin
Дата 20.11.2005, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 48
Регистрация: 24.11.2004

Репутация: нет
Всего: нет



Да вот я тоже смотрел смотрел на этот ключик *
Не рискнул. Ещё будут ВСЕ файлы на мою прогу открываться smile

За примерчик спасибо. То, что нужно. Он и правда в Delphi есть smile

Это сообщение отредактировал(а) Marsianin - 20.11.2005, 04:30
PM MAIL   Вверх
Marsianin
  Дата 9.12.2005, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 48
Регистрация: 24.11.2004

Репутация: нет
Всего: нет



А вот теперь ещё один вопрос на засыпку:

Пример из Delphi для ShellExtension работает отлично под Win32, а вот под WindowsXP x64 не пашет.
Проблема в том, чтобы зарегистрировать себя как Shell Extension нужно свой DLL прописать в тут:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions

А 64-битная WinXP все обращения в HKLM от 32-разрядных приложений перенаправляет в Wow6432Node и получается:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved

Так вот как избежать этой подмены ?
PM MAIL   Вверх
newalex
Дата 9.12.2005, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 15.11.2005

Репутация: нет
Всего: нет



Marsianin
А как файлик хочешь удалять? В чем "надежность" заключается?

64-разрядной винды у меня пока не стоит, а первый ключ там впринципе есть?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.