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

Вниз

Меню файлов   Найти похожие ветки 

 
eviruswork   (2002-06-14 13:47) [0]

Как я могу сделать в делфи, чтобы после нажатия правой кнопки мыши на файле вылазило меню с моей командой. Например, "Добавить в архив" - команда винрара? Заранее спасибо.


 
Song ©   (2002-06-14 14:02) [1]

TPopupMenu.onPopup


 
DaM   (2002-06-14 18:57) [2]

В смысле сделать так, чтобы всегда вызывалось в виндоузе твое меню или сделать только чтобы это было в твоей программе?


 
Tahion ©   (2002-06-15 16:01) [3]

Зайди на webhowto.ru Там найди раздел про реестр! Вот одна из статей от туда:

В статье о регистрации новых типов файлов ( http://www.webhowto.ru/reg/reg_n11.shtml) был рассмотрен вопрос о добавлении стандартного действия к файлам, которые не были определены в Windows. Если интересно, то рекомендую сначала прочесть ту статью, чтобы легче было воспринять изложенное ниже. А в этой статье пойдет вопрос о добавлении к контекстному меню ВСЕХ файлов и папок каких-то действий. Вы, наверное, обратили внимание на новые пункты, появляющиеся при установке WinRAR"a. А вот как их добавлять самому? Аналогичный вопрос мне попадался на каком-то форуме, вот я и решил написать небольшое руководство :). Интересно? Тогда поехали.

Конечно, можно попытаться добавлять к каждому расширению команду, но это сделать практически нереально (сколько всего править придется...). Но, есть способ лучше! В ветви HKEY_CLASSES_ROOT есть раздел с названием "*". Если в нем добавить пункт, то он будет применяться ко всем расширениям файлов. Давайте я попробую проиллюстрировать это на примере добавления пункта меню на архивацию файла. Открывайте раздел HKEY_CLASSES_ROOT\*\ и создавайте там подраздел shell (у меня его не было). В нем надо создать подраздел с каким-то уникальным именем - я назвал его arj. В параметре "По умолчанию" этого раздела надо ввести название пункта меню, которое будет у вас выводиться на экране. Задаем "Архивировать ARJ". Теперь в разделе arj надо создать раздел command, в параметре "По умолчанию" которого надо ввести выполняемую команду, т.е. "arj a arc %1". Здесь arc - имя нашего архива, а %1 - передает в качестве параметра имя файла, на котором мы кликнули мышкой. Конечно, здорово было бы создавать архив с именем выбранного файла, но я не знаю, как из передаваемого параметра вычленить это имя (оно передается вместе с путем, а это вызывает ошибку архиватора). Если кто-то знает, как это сделать и поделится информацией, я буду очень рад.

Для наглядности напишу, как это все будет выглядеть в reg-файле:

REGEDIT4
[HKEY_CLASSES_ROOT\*\shell\arj]
@="Архивировать ARJ"
[HKEY_CLASSES_ROOT\*\shell\arj\command]
@="arj a arc %1"

Что любопытно: если файл не зарегистрированного типа, то это действие будет использоваться для него по умолчанию. Т.е. вы можете щелкнуть по нему дважды мышкой, и файл будет автоматически заархивирован. Для зарегистрированных файлов этот пункт надо выбирать из контекстного меню. Таким образом можно сделать открытие незарегистрированных файлов в блокноте, достаточно ввести в параметр "По умолчанию" раздела command строку "notepad.exe %1". Теперь по даблклику такие файлы будут автоматически открываться в блокноте!

А как же быть с каталогами? Их мы тоже не обойдем стороной. Ищите в HKEY_CLASSES_ROOT раздел Folder. Последовательность действий для него аналогична описанному выше. Только, лучше если вы используете команду "arj a arc %1 -r" чтобы архивировалось с сохранением дерева вложенных каталогов.

Теперь вы сможете модифицировать это меню под себя так, как вам будет удобно. Правда, есть и некоторые ограничения: вы сможете добавлять пункты только в первый блок меню (они разделяются горизонтальной линией). Добавление в другие блоки видимо, возможно, но как это сделать я не нашел. Дело в том, что у внешних программ, добавляющих туда пункт меню, используется в качестве параметра "По умолчанию" код CLSID для модуля ActiveX. Эти пункты добавляются в подраздел shellex. Можете попробовать там покопаться, главное не забудьте предохраня... эээ, сохраняться! А если у вас что-то получится, напишите мне, я обязательно доработаю статью.

Кстати, если что-то непонятно, есть предложения или идеи - милости просим на форум! Мне же интересно знать ваше мнение о разделе :).




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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
1-84955
Strumpf
2002-08-13 21:55
2002.08.26
Мерцание кнопок на тулбаре


1-85073
Stas Ant
2002-08-14 07:00
2002.08.26
Виртуальный винт


3-84922
fvl
2002-08-07 09:43
2002.08.26
работа с полями типа LONG


1-85083
Groove
2002-08-14 18:06
2002.08.26
Сортировка


1-84984
Геннадий
2002-08-15 16:57
2002.08.26
Как программно обновить рабочий стол?