Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.066 c
15-1141110019
forb
2006-02-28 10:00
2006.03.26
Ищется программист для написания программы для курсовой работы


1-1140446346
Ega23
2006-02-20 17:39
2006.03.26
Use Debug DCUs или что-то ещё?


1-1140610287
Kolan
2006-02-22 15:11
2006.03.26
Можо ли ждать события, но не усыплять поток?


2-1141716984
Ivolg
2006-03-07 10:36
2006.03.26
Чтение из потока...


15-1141496647
Без имени и в общем..
2006-03-04 21:24
2006.03.26
Весна - что нового?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский