![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Прошу сообщество потестирвать мою библиотеку Shell Ace. Как сказано в описании темы, библиотека позволяет создавать в среде разработки Delphi расширения оболочки Windows. Поддерживаются версии Delphi начиная с 7 и заканчивая XE4. В библиотеку входит расширение IDE, которое интегрируется в окно, появляющееся при выборе команды File/New/Other, оно позволяет создавать каркасы расширений.
Для создания нового расширения нужно выбрать на вкладке Windows Shell Extension значек Windows Shell Extension, это приведет к созданию нового проекта расширения. После этого нужно выбрать на той же вкладке необходимый обработчик, например Context menu handler ![]() Появится диалог создания обработчика: ![]() Можно выбрать имя класса и дополнительные методы обработчика, которые будут прописаны в коде. После нажатия на кнопку OK в проект будет добавлен новый модуль. Если при этом была отмечена опция Create sample, то в код модуля будет прописан образец обработки информации. Процесс разработки расширения сводится к перекрытию различных методов базового класса расширения, в перекрытых методах реализуется нужная функциональность. После написания расширения его нужно регистрировать стандартным образом с помощью утилиты regsvr32.exe из состава Windows. Регистрацию можно произвести и с помощью расширения оболочки RegExtension, входящим в состав Shell Ace. После его регистрации в системе при вызове (с нажатой клавишей Shift) контекстного меню dll-файлов в них можно увидеть две дополнительные команды: ![]() В системах начиная с Windows Vista RegExtension сама запросит при необходимости повышение привилегий, необходимых для регистрации расширения оболочки. Библиотека написана с учетом специфики последних версий Windows (например, реализована поддержка методов инициализации IInitilizateWith*, реализована работа с 32-ми иконками в контекстных меню и т.д.). Скачать библиотеку можно по ссылке http://shellace.com/ShellAceSetup.exe. Исполняемый файл является установщиком, он сам пропишет все пути в Delphi и зарегистрирует расширение IDE. К сожалению, полноценная справка еще не готова. Но я с удовольствием отвечу на любые вопросы и приму любые пожелания. ![]() |
Этот пользователь сказал Спасибо Aniskin за это полезное сообщение: | ||
M.A.D.M.A.N. (30.06.2013)
|
#2
|
|||
|
|||
![]() Можно пример поподробней для ContextMenu, например регистрация для рашрирения .exe
|
#3
|
|||
|
|||
![]() Цитата:
Та версия библиотеки, которая выложена на сайте, устарела. Сегодня вечером выложу обновленную версию. Сначала прочитайте небольшой мануал по созданию расширений оболочки ContextMenu. Конкретно для exe файлов нужно в методе FillProgIDList добавлять в список строку ".exe" или "exefile". Остальное смотрите в генерируемом библиотекой примере. Если будут еще вопросы - задавайте. Цитата:
Последний раз редактировалось M.A.D.M.A.N., 24.07.2013 в 14:59. Причина: Мерж |
Этот пользователь сказал Спасибо Aniskin за это полезное сообщение: | ||
Zorkov Igor (24.07.2013)
|
#4
|
|||
|
|||
![]() Цитата:
Отпишитесь здесь плз когда выложите, помучаю вечером Спасибо |
#5
|
|||
|
|||
![]() Цитата:
|
Этот пользователь сказал Спасибо Aniskin за это полезное сообщение: | ||
Zorkov Igor (24.07.2013)
|
#6
|
|||
|
|||
![]() Шикарно вообще
![]() Радует инсталер Все получилось с контекст меню, регистрирую DLL как то так Код:
const CLSID_ContextMenu = '{BBAB3AF5-43D9-4C12-BC92-32CF83868822}'; function RegExt(FileName: String): Boolean; var Reg: TRegistry; begin try Result := False; Reg := TRegistry.Create; try with Reg do begin RootKey := HKEY_CLASSES_ROOT; OpenKey('\CLSID\' + CLSID_ContextMenu, True); WriteString('', 'File Unlocker'); OpenKey('\CLSID\' + CLSID_ContextMenu + '\InProcServer32', True); WriteString('', FileName); WriteString('ThreadingModel', 'Apartment'); Result := OpenKey('\*\shellex\ContextMenuHandlers\' + CLSID_ContextMenu, True); if Result then begin WriteString('', CLSID_ContextMenu); Result := OpenKey('\folder\shellex\ContextMenuHandlers\' + CLSID_ContextMenu, True); WriteString('', CLSID_ContextMenu); end; Result := OpenKey('\lnkfile\shellex\ContextMenuHandlers\' + CLSID_ContextMenu, True); WriteString('', CLSID_ContextMenu); end; finally Reg.Free; end; except end; end; function UnRegExt(FileName: String): Boolean; var Reg: TRegistry; begin try Result := False; Reg := TRegistry.Create; try with Reg do begin RootKey := HKEY_CLASSES_ROOT; Result := DeleteKey('\*\shellex\ContextMenuHandlers\' + CLSID_ContextMenu); if Result then begin Result := DeleteKey('\folder\shellex\ContextMenuHandlers\' + CLSID_ContextMenu); end; Result := DeleteKey('\lnkfile\shellex\ContextMenuHandlers\' + CLSID_ContextMenu); end; finally Reg.Free; end; except end; end; Буду теперь доводить до ума File Unlocker, здесь пользовал ShellPlus, но он шибко глючный сволочь |