15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


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

В 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;