Главная страница
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.047 c
1-1140414198
Петрович100
2006-02-20 08:43
2006.03.26
как из bmp файла сделать такой, то есть по цвету в 3d


2-1141751190
Эля
2006-03-07 20:06
2006.03.26
минимизация многооконного приложения


2-1141644031
Farpik
2006-03-06 14:20
2006.03.26
Как отследить подключение к Интернету?


3-1138719392
Ega23
2006-01-31 17:56
2006.03.26
Refresh TClientDataSet по Master-Detail связке


2-1141019874
Рафик
2006-02-27 08:57
2006.03.26
DBGrid