Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.26;
Скачать: CL | DM;

Вниз

Интеграця в проводник (во всплывающее меню)   Найти похожие ветки 

 
Piter ©   (2006-03-04 17:56) [0]

У кого-нибудь есть опыт интегрирования своих пунктов меню во всплывающее меню проводника над файлами?

Сижу, разбираюсь... Надо же было так навертеть...
Понятно, что ковырять надо HKEY_CLASSES_ROOT.

С папками просто, создаешь нужный ключ:

Directory\shell\[Название]\command

В [Название] по умолчанию пишешь имя, которое будет отображаться, в Command по умолчанию путь до exe, все просто и хорошо.

А вот с файлами трындец :(

Непосредственно в расширениях (например, .arj) можно провернуть способ с папками, но до тех славных пор, пока кто-нибудь не возьмет расширение по умолчанию себе. Вообще тупость, зря позволили расширения на другие ключи ссылать.

Ладно, допустим мне нужно "встроиться" в расширение .arj, по умолчанию его берет WinRar

Значит мне надо лезть в ключ WinRar... Можно там создать shell\bla-bla\command - но на ключ WinRar, например, еще и расширение bz2 зарегистрировано. А мне то надо появляться только у arj.

Никакого другого способа, кроме этого COM не вижу. И с этим самая главная проблема. Есть у кого маленькая, демонстрационная DLL"ка совместимая с explorer-расширениями?

Я вот нашел в: Borland\Delphi7\Demos\ActiveX\ShellExt примерчик: contmenu.dpr
Вроде все отлично, скомпилил. Но не работает!

Порядок действия таков:

1) в ключе WinRar прописал:

shellex\contmenu\ - по умолчанию: {EBDF1F20-C829-11D1-8233-0020AF3E97A9} (это в примере contmenu.dpr такой используется)

Создал в \CLSID ключ с тем же GUID

Внутри ключ: InprocServer32 и по умолчанию путь до библиотеки скомпиленной

Еще на всякий случай параметр ThreadingModel со значением: Apartment

Но не работает! Что может быть не так?

Пример DLL может в Delphi корявый или я не так использую? Не понимать...


 
Экспериментатор   (2006-03-04 19:35) [1]

Если встроить отдельный пункт - Могу помочь.
Как-то делал много таких вещей.
В конкретном случае пока не знаю - не вник
Пиши galera@narod.ru
спам не приветствуется, в смысле вообще не приходит
Ну и только с серьезными намерениями :-)


 
Piter ©   (2006-03-04 20:27) [2]

ну давай уж сюда, зачем мылом


 
DiamondShark ©   (2006-03-05 00:26) [3]


> Порядок действия таков:

а команда
regsvr32 contmenu.dll
не помогает?

Порядок действий, вообще-то, неполный.
Полный -- в ContextM.pas
TContextMenuFactory.UpdateRegistry


> А мне то надо появляться только у arj.

В IShellExtInit.Initialize проверять, для каких файлов вызвано, и возвращать E_FAIL если тип файла не тот, что надо.


 
DiamondShark ©   (2006-03-05 00:33) [4]


> но до тех славных пор, пока кто-нибудь не возьмет расширение
> по умолчанию себе.

На этот случай есть HKEY_CLASSES_ROOT\*


 
Piter ©   (2006-03-05 01:01) [5]

DiamondShark ©   (05.03.06 0:26) [3]

угу, разобрался. Дело было в том, что не добавлял в Approved (в NT надо).

DiamondShark ©   (05.03.06 0:26) [3]
В IShellExtInit.Initialize проверять, для каких файлов вызвано


угу, тоже разобрался уже. Собственно, в примере код написан для вызова одного файла, не заметил этого FFileName.

DiamondShark ©   (05.03.06 0:26) [3]
и возвращать E_FAIL если тип файла не тот, что


понял уже...

DiamondShark ©   (05.03.06 0:33) [4]
На этот случай есть HKEY_CLASSES_ROOT\*


да, но что будет если туда каждый станет запись добавлять?

Вообще, глупо MS сделали на мой взгляд. Не надо было разрешать обработку расширения на другой ключ переносить. Или пусть бы переносились, но Shell и ShellEx и самого расширения не игнорировались бы...

Кстати, интересно. А что будет если я и в "*" пропишу свой GUID, и в ".arj"? Два раза будет вызываться?

P.S. Теперь появилась еще одна проблема: http://delphimaster.net/view/1-1141505242/



Страницы: 1 вся ветка

Текущий архив: 2006.03.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
15-1141064916
Matrex
2006-02-27 21:28
2006.03.26
Опрос. Работа с мобильным телефоном (Siemens) – быть или не быть…


15-1141484609
Зм1й
2006-03-04 18:03
2006.03.26
Помогите с WebMoney!


2-1142191918
Flint-1983
2006-03-12 22:31
2006.03.26
Создание компонентов в run-time


2-1142238684
Stanislav
2006-03-13 11:31
2006.03.26
Сохранение строки в Юникоде


2-1141940683
xroot
2006-03-10 00:44
2006.03.26
Наитупей6ий вопрос