Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Взаимодействие с ОС



Вернуться к списку функций
 Регистрирование собственного расширения файлов

 Прислал: ION T (Киев) ( 3 июня 2002 г. )
©  ION T
 Описание:
Регистрирует в системы обработчики для собственных (в том числе и уже существуюших) расширений файлов. Здесь не реализована возможность определения своей иконки для расширений. А также есть процедура для удаления обработчиков расширений.

 Зависимости:
Registry

 Ограничения:
Проверено под D5, D6 с WinМЕ, WinXP. Должно работать под D3-D6 с Win95/98/ME/NT/2k/XP

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Регистрирование собственного расширения файлов

Регистрирует в системы обработчики для собственных (в том числе и уже существуюших) расширений файлов. Здесь не реализована возможность определения своей иконки для расширений. А также есть процедура для удаления обработчиков расширений.

Зависимости: Registry
Автор:       ION T, efsoft@ukrpost.net, Киев
Copyright:   ION T
Дата:        3 июня 2002 г.
***************************************************************** }

procedure RegisterExtensions(InArr: array of string; FilePath, Key: string);
var reg: TRegistry;
    i: integer;
    def: string;
begin
  reg:= TRegistry.Create;
  try
    reg.RootKey:= HKEY_CLASSES_ROOT;
    for i:= high(InArr) downto 0 do
    begin
      reg.OpenKey(InArr[i], true);
      def:= reg.ReadString('');
      reg.CloseKey;
      if def= '' then
        def:= copy(InArr[i], 2, 3)+ 'file';

      reg.OpenKey(def+ Key, true);
      reg.WriteString('', FilePath);
      reg.CloseKey;
    end;
  finally reg.Free end;
end;

procedure UnRegisterExtensions(InArr: array of string; KillPath, Key2Kill: string);
var reg: TRegistry;
    i: integer;
    def: string;
begin
  delete(Key2Kill, 1, 1);
  reg:= TRegistry.Create;
  try
    reg.RootKey:= HKEY_CLASSES_ROOT;
    for i:= high(InArr) downto 0 do
    begin
      reg.OpenKey(InArr[i], true);
      def:= reg.ReadString('');
      reg.CloseKey;

      if def<> '' then
      begin
        reg.OpenKey(def+ KillPath, false);
        reg.DeleteKey(Key2Kill);
        reg.CloseKey;
      end;
    end;
  finally reg.Free end;
end;

 Пример использования:
procedure TSetupForm.chkIntegrateClick(Sender: TObject);
const KeyPath= '\Shell'; //не менять, если не знаете назначения
      ActionKey= '\Process with MyProg'; //менять на то, что будет писаться в меню эксплорера (оставить первый слеш)
      FullKey= KeyPath+ ActionKey+ '\Command'; //то-же что и для KeyPath
var Path: string;
begin
  Path:= Application.ExeName+ " %L"';
  if chkIntegrate.Checked then
    RegisterExtensions(['.bpl', '.com', '.dll', '.dpl', '.exe', '.ocx', '.scr',
      '.sys', '.acm', '.ax'], Path, FullKey) else
    UnRegisterExtensions(['.bpl', '.com', '.dll', '.dpl', '.exe', '.ocx', '.scr',
      '.sys', '.acm', '.ax'], KeyPath, ActionKey);
end;


Вернуться к списку функций

Наверх ▲