Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
mmms   (2007-07-16 14:18) [0]

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


 
asdddd   (2007-07-16 14:23) [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;  

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


 
Dib@zol ©   (2007-07-16 14:26) [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;


 
mmms   (2007-07-16 16:12) [3]

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

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



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

Форум: "Начинающим";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.046 c
2-1184759566
EugeneXP
2007-07-18 15:52
2007.08.12
Создание точного таймера до сотых секунды


2-1183583554
Infloop
2007-07-05 01:12
2007.08.12
Индексация типов данных


1-1181105710
DelphiN!
2007-06-06 08:55
2007.08.12
Подключиться к HKEY_CURRENT_USER другого пользователя


2-1184298375
Интересующийся
2007-07-13 07:46
2007.08.12
Защита программы


15-1184498103
ламер2007
2007-07-15 15:15
2007.08.12
Win2003





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский