Советы по Delphi


         

Ассоциирование типов файлов (расширений)


В основном вам необходимо добавить два ключа в улей регистра HKEY_CLASSES_ROOT. Зарегистрируете в корне ваше расширение типа ".ext" (создаете ключ с именем расширения):

HKEY_CLASSES_ROOT\
.ext\

и запишите в строке "default" созданного ключа "внутреннее имя" вашего типа файлов - например, MyApp.Document:

HKEY_CLASSES_ROOT\
.ext\Default = "MyApp.Document"

Затем создайте другой ключ с этим именем:

HKEY_CLASSES_ROOT\MyApp.Document\

Создайте подключ с именем "shell", в нем другой подключ с именем "open" и в "open", в свою очередь, еще один подключ с именем "command". Значение по умолчанию (default) - путь и имя вашего приложению с ключом "%1", представляющим параметр "имя файла", позволяя системе подставлять подставлять вызванный файл:

HKEY_CLASSES_ROOT\
MyApp.Document\shell\open\command\Default = "C:\myapp\myapp.exe %1"

Все манипуляции в коде производятся с помощью объекта TRegistry или при использовании InstallShield, который сделает это за вас автоматически. Я должен посоветовать вам использовать оба пути, поскольку пользователь может внести в регистры всякий мусор.

Вот еще один совет:

Самый простой путь достижения цели - модифицировать секцию Extensions в win.ini-файле, расположенном с директории Windows. Это также работает под Win 95, автоматически обновляя регистры при перезапуске системы. Взгляните на секцию Extensions win.ini-файла для определения формата записи. Поместите IniFiles в секцию используемых модулей и создайте код подобно этому:

var
INIFile: TIniFile;begin
try
INIFile := TInifile.Create('WIN.INI');INIFile.WriteString('Extensions','txt','c:\windows\notepad.exe ^.txt');finallyINIFile.Free;end;end;

Это ассоциирует файлы с расширением *.txt с Записной Книжкой (Notepad) Windows. Например, для ассоциации вашего приложения MyApp с каталогом расположения c:\MyApps с файлами, имеющими расширение *.MAP, необходимо выполнить следующее:

var
INIFile: TIniFile;begin
try
INIFile := TInifile.Create('WIN.INI');INIFile.WriteString('Extensions','map','c:\myapps\myapp.exe ^.map');finallyINIFile.Free;end;end;
<

Содержание  Назад  Вперед