Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контектсное меню для ВСЕХ типов файлов 
:(
    Опции темы
RST8
  Дата 1.10.2005, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 8.12.2004

Репутация: 1
Всего: 1



Нашел здесь на форуме следующий код:

Код

uses  
 Registry;  
   
procedure AddFileMenue(FilePrefix, Menue, Command: string);  
var  
 reg: TRegistry;  
 typ: string;  
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 DeleteFileMenue(Fileprefix, Menue: string);  
var  
 reg: TRegistry;  
 typ: string;  
begin  
 reg := TRegistry.Create;  
 with reg do  
 begin  
   RootKey := HKEY_CLASSES_ROOT;  
   OpenKey('.' + Fileprefix, True);  
   typ := ReadString('');  
   CloseKey;  
   OpenKey(typ + '\shell', True);  
   DeleteKey(Menue);  
   CloseKey;  
   Free;  
 end;  
end;  


{ Example / Beispiel:}  

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 { Register the Menuepoint: }  

 AddFileMenue('rtf', 'Edit with Notepad', 'C:\Windows\system\notepad.exe');  

 {  
   If you now click with the right mousebutton on a *.rtf-file then  
   you can see a Menuepoint: "Edit with Notepad".  
   When Click on that point Notepad opens the file.  

   Wenn man nun mit der rechten Maustaste im Explorer auf eine *.rtf-Datei Clickt,  
   dann erscheint dort der Menuepunkt "Edit with Notepad".  
   Beim Clicken darauf, цffnet Notepad diese Datei.  
 }  
end;  


procedure TForm1.Button2Click(Sender: TObject);  
begin  
 {  
  Unregister the Menuepoint / Undo your changes in the Registry:  
  Lцscht den Menuepunkt wieder aus der Registry:  
 }  

 DeleteFileMenue('rtf', 'Edit with Notepad');  
end; 


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

--------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной!
PM   Вверх
Delphins
Дата 2.10.2005, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 10.8.2005
Где: Россия, Краснодар

Репутация: нет
Всего: нет



Замиенить rtf на * или *.*.
Непомогает?
PM MAIL ICQ Skype MSN   Вверх
CaptainFlint
Дата 2.10.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 1
Всего: 23



RST8
Попробуй так:
Код

uses
 Registry;

procedure AddStarMenue(Menue, Command: string);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 with reg do
 begin
   RootKey := HKEY_CLASSES_ROOT;
   OpenKey('*\shell\' + Menue + '\command', True);
   WriteString('', command + ' "%1"');
   CloseKey;
   Free;
 end;
end;

procedure DeleteStarMenue(Menue: string);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 with reg do
 begin
   RootKey := HKEY_CLASSES_ROOT;
   OpenKey('*', True);
   OpenKey('*\shell', True);
   DeleteKey(Menue);
   CloseKey;
   Free;
 end;
end;


{ Example / Beispiel:}

procedure TForm1.Button1Click(Sender: TObject);
begin
 { Register the Menuepoint: }

 AddStarMenue('Edit with Notepad', 'C:\Windows\system\notepad.exe');

 {
   If you now click with the right mousebutton on a *.rtf-file then
   you can see a Menuepoint: "Edit with Notepad".
   When Click on that point Notepad opens the file.

   Wenn man nun mit der rechten Maustaste im Explorer auf eine *.rtf-Datei Clickt,
   dann erscheint dort der Menuepunkt "Edit with Notepad".
   Beim Clicken darauf, цffnet Notepad diese Datei.
 }
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
 {
  Unregister the Menuepoint / Undo your changes in the Registry:
  Lцscht den Menuepunkt wieder aus der Registry:
 }

 DeleteStarMenue('Edit with Notepad');
end;


За контекстное меню всех файлов отвечает ветка HKEY_CLASSES_ROOT\* (безо всяких точек).


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
RST8
  Дата 2.10.2005, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 8.12.2004

Репутация: 1
Всего: 1



Спасибо, работает. Только немного надо исправить процедуру (я пробовал на XP)

Код

procedure DeleteStarMenue(Menue: string);    
var    
 reg: TRegistry;    
begin    
 reg := TRegistry.Create;    
 with reg do    
 begin    
   RootKey := HKEY_CLASSES_ROOT;    
   //OpenKey('*', True);    <------------------------удалить
   OpenKey('*\shell', True);    
   DeleteKey(Menue);    
   CloseKey;    
   Free;    
 end;    
end;


Ну и чтобы совсем закрыть вопрос. Как сделать все это при щелчке на папке (попробовать .folder ?)
Попробую попозже. smile

--------------------------------

Попробовал - непрокатило. smile

Это сообщение отредактировал(а) RST8 - 2.10.2005, 16:10
--------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной!
PM   Вверх
CaptainFlint
Дата 2.10.2005, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Искатель сокровищ
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 26.2.2003
Где: Москва

Репутация: 1
Всего: 23



Цитата(RST8 @ 2.10.2005, 17:01)
Только немного надо исправить процедуру (я пробовал на XP)

А, ну да, прозевал, когда удалял лишнее. smile

Цитата(RST8 @ 2.10.2005, 17:01)
Ну и чтобы совсем закрыть вопрос. Как сделать все это при щелчке на папке (попробовать .folder ?)

Не ".folder", а "Folder" (без точки).


--------------------
Почему же, ё-моё, ты нигде не пишешь "ё"?
--------------------
Для тех, кто не знает: CaptainFlint - это бывший Константин. ;) 
PM MAIL WWW ICQ   Вверх
RST8
Дата 2.10.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 232
Регистрация: 8.12.2004

Репутация: 1
Всего: 1



Ну что же вопрос закрыт. Спасибо !
+1

Облом, у меня недостаточно постов для этого.

Это сообщение отредактировал(а) RST8 - 2.10.2005, 20:08
--------------------
Посадка, с места которой можно уйти на собственных ногах, считается удачной!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1334 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.