Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как связать определённое расширение файлов с моим приложением? 
:(
    Опции темы
Pakshin A. S.
Дата 5.11.2004, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



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

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0368 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.