![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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, но он шибко глючный сволочь |