Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите, как связать свой тип файлов к своей программе?


mmms ©   (2007-07-16 14:18:00) 

Есть свой формат файла, хотелось бы что бы в контексном меню проводника при нажатии правой клавиши мыши появлялся доп. пункт, при нажатии на который программа получала вызов + в качестве переметра - имя файла. Подскажите? Сморел в Delphi World, но что то ничего не нашел.


mmms   (2007-07-16 16:12:00) [1]

[1] asdddd   (16.07.07 14:23)
[2] Dib@zol ©   (16.07.07 14:26)

Спасибо за код, премного благодарен!


Dib@zol   (2007-07-16 14:26:00) [2]

procedure TryIntegrate;
const
 HKCR = HKEY_CLASSES_ROOT;
 FileNick = 'File_type';
 fileType = 'Файл для моей проги!!!';
 open = 'Атткрыть!';
 ext = '.123';
 iconNum = '0';
var
 HK, TK : HKEY;
 lps : PChar;
begin
 if RegOpenKey(HKCR, ext, HK)<>0 then begin // No key!

   RegCreateKey(HKCR, ext, HK);
   RegSetValue(HK, nil, REG_SZ, FileNick, length(FileNick));
   RegCloseKey(HK);

   RegCreateKey(HKCR, FileNick, HK);
   RegSetValue(HK, nil, REG_SZ, fileType, length(fileType));

     RegCreateKey(HK, 'DefaultIcon', TK);
     lps:=PChar(ParamStr(0)+','+iconNum);
     RegSetValue(TK, nil, REG_SZ, lps, length(lps));
     RegCloseKey(TK);

     RegCreateKey(HK, 'shell', TK);
       RegCreateKey(TK, 'open', TK);
       RegSetValue(TK, nil, REG_SZ, open, length(open));
       RegCreateKey(TK, 'command', TK);
       lps:=PChar(ParamStr(0)+' %1');
       RegSetValue(TK, nil, REG_SZ, lps, length(lps));
       RegCloseKey(TK);

   RegCloseKey(HK);
 end;
end;


asdddd   (2007-07-16 14:23:00) [3]

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;  

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php


Наверх

Титульная страница Поиск, карта сайта Написать письмо