Как связать определённое расширение файлов с моим приложением?

Материал из DRKB

Как связать определённое расширение файлов с моим приложением?[править | править код]

В Win32 необходимо создать новую запись в реестре в корневом ключе HKEY_CLASSES_ROOT, которая будет указывать на расширение файла, командную строку и иконку, которая будет отображаться для этого расширения. В Win16, просто включить расширение файла и командную строку в секцию [Extensions] в Win.ini.

Пример:

uses 
  Registry, { For Win32 } 
  IniFiles; { For Win16 } 

{ Для Win32 } 
procedure TForm1.Button1Click(Sender: TObject); 
var 
  reg: TRegistry; 
begin 
  reg := TRegistry.Create; 
  reg.RootKey := HKEY_CLASSES_ROOT; 
  reg.LazyWrite := false; 
  { Add Program Support } 
  reg.OpenKey('.bor\shell\open\command', true); 
  { Имя файла будет передавать в приложение как первый параметр }
  reg.WriteString('', 'C:\Program Files\Borland\Delphi 3\Project1.exe %1'); 
  { Добавляем отображаемую иконку }
  reg.CloseKey; 
  reg.OpenKey('.bor\DefaultIcon', true); 
  { Для отображения используем первую иконку в нашем приложении }
  reg.WriteString('', 'C:\Program Files\Borland\Delphi 3\Project1.exe,0');
  reg.CloseKey; 
  reg.Free; 
end; 

{ Для Win16 } 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  WinIni: TIniFile; 
  WinIniFileName: array[0..MAX_PATH] of char; 
  s: array[0..64] of char; 
begin 
  GetWindowsDirectory(WinIniFileName, SizeOf(WinIniFileName)); 
  StrCat(WinIniFileName, '\win.ini'); 
  WinIni := TIniFile.Create(WinIniFileName); 
  WinIni.WriteString('Extensions', 
                     'bor', 
                     'C:\PROGRA~1\BORLAND\DELPHI~1\PROJECT1.EXE ^.bor'); 
  WinIni.Free; 
  StrCopy(S, 'Extensions'); 
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S)); 
end;


Source: Взято из http://forum.sources.ru
ID: 01739