Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2009, 14:40   #1
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию Cвой пункты в всплывающем меню Windows Explorer

Добрый день!
Подскажите, пожалуйста, как создать свой пункты в всплывающем меню Windows Explorer, для определенных форматов файлов?
Gerzs вне форума Ответить с цитированием
Старый 11.08.2009, 14:54   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Держи:
Код:
procedure AddFileMenue(FilePrefix, Menue, Command: string); 
var 
 typ: string;
 reg: TRegistry;  
begin 
reg := TRegistry.Create; 
with reg do 
begin 
   RootKey := HKEY_CLASSES_ROOT; 
   OpenKey('.' + FilePrefix, True); 
   typ := ReadString(''); 
   if typ = '' then 
   begin 
     typ := Fileprefix + 'file'; 
     WriteString('', typ); 
   end; 
   CloseKey; 
   OpenKey(typ + '\shell\' + Menue + '\command', True); 
   WriteString('', command + ' "%1"'); 
   CloseKey; 
   Free; 
 end; 
end;
Применение
Код:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
AddFileMenue('rtf', 'Edit with Notepad', 'C:\Windows\system\notepad.exe');  
end;
Взято из DRKB.
uberchel вне форума Ответить с цитированием
Старый 14.08.2009, 22:11   #3
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Где в реестре хранятся данные об всплывающем меню Windows Explorer?
Gerzs вне форума Ответить с цитированием
Старый 14.08.2009, 22:18   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

меню файла чтоли?
так из выше указанного кода возьми...или что надо то?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.08.2009, 11:16   #5
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Большое спасибо!
Хотел еще уточнить:
1. Как удалить этот пункт?
2. Как отрегулировать его положение в всплывающем меню Windows Explorer?
3. Как сделать несколько подпунктов?
4. Как передать программе информацию о выделенном файле?

Последний раз редактировалось Gerzs; 22.08.2009 в 18:47.
Gerzs вне форума Ответить с цитированием
Старый 22.08.2009, 11:32   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
4. Как передать программе информацию о выделенном файле?
как параметр передается ParamStr(1)
1)удалить эту строку
Код:
OpenKey(typ + '\shell\' + Menue + '\command', True); 
   WriteString('', command + ' "%1"');
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.08.2009, 14:57   #7
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Спасибо.


Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
как параметр передается ParamStr(1)
Что не пойму, дай пожалуйста пример.
Gerzs вне форума Ответить с цитированием
Старый 22.08.2009, 15:37   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

В своей программе пиши :
Код:
S := ParamStr(1);
И получишь полный путь с файлом который из проводника передается твоей проге. Т.е. при нажатии твоего пункта в меню проводника запуститься твоя прога (как тебе описали выше), а вот в paramStr(1) ты имеешь полный путь с файлом. (может зря дважды ???)
Или тоже можно получить если какой-нить файл "Открыть с помощью..." твоей программы - в S будет то, что я писал.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 22.08.2009, 16:08   #9
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

Спасибо за разъяснения.

Моя программа должна выполнять однотипную операцию (в зависимости от выбранного пункта в проводнике), изменяется только один параметр, как его передать программе?
Gerzs вне форума Ответить с цитированием
Старый 22.08.2009, 17:00   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure AddFileMenue(FilePrefix, Menue, Command, SubCommand='': string); 
var 
 typ: string;
 reg: TRegistry;  
begin 
reg := TRegistry.Create; 
with reg do 
begin 
   RootKey := HKEY_CLASSES_ROOT; 
   OpenKey('.' + FilePrefix, True); 
   typ := ReadString(''); 
   if typ = '' then 
   begin 
     typ := Fileprefix + 'file'; 
     WriteString('', typ); 
   end; 
   CloseKey; 
   if SubCommand<>'' then SubCommand:=' '+SubCommand;
   OpenKey(typ + '\shell\' + Menue + '\command', True); 
   WriteString('', command + ' "%1"'+SubCommand); 
   CloseKey; 
   Free; 
 end; 
end;
применяем или по старому...но вам нужно например так...

Код:
AddFileMenue('rtf', 'Edit with Notepad', 'C:\Windows\system\notepad.exe','edit');
как последний параметр лучше применять одно слово(без пробелов)
тогда все оно будет доступно по ParamStr(2)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалиь пункты в контекстном меню Altera Свободное общение 0 06.08.2009 09:21
Как отключить WinKey в Windows Explorer? OCTAGRAM Софт 3 29.06.2009 04:51
Контекстное меню Windows Михаил Юрьевич Софт 3 17.06.2009 23:19
Пункты меню Run... Roof Общие вопросы Delphi 1 25.08.2008 14:45
Контексное меню Windows dr.Chas Общие вопросы Delphi 1 14.06.2008 20:08