Свой пункт в контекстном меню на папке...

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
TimXP
Сообщения: 1
Зарегистрирован: 05 фев 2005, 00:44

Поиогите!
Как написать программу, чтобы в контекстном меню на любой папке появлялся новый пункт, при нажатии на который в этой папке создавался бы пустой файл readme.txt ?
Очень надо! Помогите!
timself
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

TimXP, не надо дублировать одно и тоже сообщение в разных разделах форума.
Даже самый дурацкий замысел можно воплотить мастерски
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

см. в MSDN статью Creating Context Menu Handlers
Даже самый дурацкий замысел можно воплотить мастерски
OTELLO
Сообщения: 59
Зарегистрирован: 11 дек 2004, 11:52
Откуда: Питеррр
Контактная информация:

Кароче надо делать так:

в реестре есть такой раздел HKEY_CLASSES_ROOT\Folder,
далее находим подраздел Shell и в ЭТОМ ПОДРАЗДЕЛЕ создаём новый подраздел с ЛЮБЫМ именем, но лучше с говорящим,кот. будет говорить о назначении пункта в контекстном меню! =), потом нажимаем на етот подраздел и в параметре По- умолчанию пишем ТО, ЧТО ХОТИМ УВИДЕТЬ В КОНТЕКСТНОМ МЕНЮ. Вот... Далее создаем опять новый подраздел под названием command и в нём, в параметре По- умолчанию записываем действие, кот. необходимо. В Вашем случае это "...\Прога.exe %1"- процент и 1 через пробел от расширения. Это мы передаём адрес ПАПКИ, на которой кликнули в Вашу прогу. А в Вашей проге должен быть обработчик следующий:

Код: Выделить всё

IF paramcount>0 THEN
  BEGIN
   [b]STR[/b]:=paramstr(1);
    FOR i:=2 TO paramcount DO str:=str+' '+ParamStr(i);     
  END;
но это для Дельфы, я Си не знаю =((, вот значит первая строка- это проверка на присутствие параметров (в нашем случае это тот самый %1), далее переменной STR присваеваем первый параметр, а потом в цикле проверяем на присутствие каких-нибудь есчё параметров,впринципе это необязательна,так- понту ради.

Всё, далее программа создает файл(ну т.е. надо её научить это делать =)))) с именем ReadMe.txt по адресу STR и всё =)))
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Я попробовал ради интереса. С реестром у меня ничего не получилось, OTELLO. Похоже информация как минимум не проверенная.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
OTELLO
Сообщения: 59
Зарегистрирован: 11 дек 2004, 11:52
Откуда: Питеррр
Контактная информация:

Romeo - информация проверенная, я сам это использую и именно передачу параметра- адрес папки. Т.е. практически тоже самое. Кароче реестр должен выглядеть так:

//NewWindow- подраздел
[HKEY_CLASSES_ROOT\Folder\shell\NewWindow]
//Элемент меню
@="&Открыть новое окно"
//Раздел command- раздел действий
[HKEY_CLASSES_ROOT\Folder\shell\NewWindow\command]
//Действие,кот происходит
@="explorer.ru %1"


@ - это означает "Параметр по- умолчанию"
в итогое откроется новое окно проводника с той папкой,на кот. мы кликнули...
Ответить