В Win32 необходимо создать новую запись в реестре в корневом ключе HKEY_CLASSES_ROOT, которая будет указывать на расширение файла, командную строку и иконку, которая будет отображаться для этого расширения. В Win16, просто включить расширение файла и командную строку в секцию [Extensions] в Win.ini.
Пример:
Code:
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;
Код, который я предоставил, - это пример на Delphi, демонстрирующий, как ассоциировать приложение с конкретным расширением файла в Windows.
Для Win32 (Windows 32-бита) код создает новый значок в ключе HKEY_CLASSES_ROOT, который maps файловое расширение к командной строке и иконке ассоциированного приложения. Созданные значки registry:
.bor\shell\open\command: устанавливает командную строку для открытия файлов с расширением .bor
.bor\DefaultIcon: устанавливает стандартную иконку для файлов с расширением .bor
Для Win16 (Windows 16-бита) код пишет запись в файл Win.ini в разделе [Extensions], который ассоциирует файловое расширение с командной строкой и приложением.
Вот разбивка каждого процедуры:
Win32 (TForm1.Button1Click)
Создает новый экземпляр TRegistry и устанавливает корневой ключ в HKEY_CLASSES_ROOT.
Открывает подключение .bor подключения к HKEY_CLASSES_ROOT\shell\open\command.
Пишет строковое значение в это подключение, которое устанавливает командную строку для открытия файлов с расширением .bor.
Закрывает подключение.
Открывает подключение .bor\DefaultIcon и пишет строковое значение, указывающее на стандартную иконку для файлов с расширением .bor.
Закрывает подключение.
Освобождает объект TRegistry.
Win16 (TForm1.Button2Click)
Создает новый экземпляр TIniFile и устанавливает имя файла в win.ini.
Пишет запись в раздел [Extensions], которая ассоциирует файловое расширение .bor с командной строкой и приложением.
Освобождает объект TIniFile.
Чтобы ассоциировать ваше приложение с конкретным файловым расширением в Windows, вы можете использовать этот код как стартовый пункт. Однако помните, что ключи registry и значения могут варьироваться в зависимости от версии Windows и требований вашего приложения.
Вот некоторые дополнительные советы:
Убедитесь, что тестировали свой код тщательно, чтобы обеспечить его корректную работу на различных версиях Windows.
Будьте осторожны при изменении registry, потому что неправильные изменения могут привести к системной нестабильности или даже потере данных.
Рассмотрите использование болееadvanced техник для ассоциирования файловых расширений с приложениями, таких как COM (Component Object Model) или shell-extensions.
Связать определенное расширение файлов с приложением можно на Win32 путем создания записи в реестре HKEY_CLASSES_ROOT, а на Win16 - включением расширения и командной строки в секцию [Extensions] файла Win.ini.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.