Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Регистрация типа файла


Автор: Dr Smth 18.10.2004, 10:11
Не подскажите, каким образом можно зарегестрировать свой тип файлов и сопоставить его своей же программе (не важно когда - при установке, при первом запуске)?

Автор: Medved 18.10.2004, 10:59
Код
Uses Registry;

procedure RegisterFileType(FileType,FileTypeName, Description,ExecCommand:string);
begin
 if (FileType='') or (FileTypeName='') or (ExecCommand='') then exit;  
 if FileType[1]<>'.' then FileType:='.'+FileType;  
 if Description='' then Description:=FileTypeName;  

 with Treginifile.create do  
 try  
   rootkey := hkey_classes_root;  
   writestring(FileType,'',FileTypeName);  
   writestring(FileTypeName,'',Description);  
   writestring(FileTypeName+'\shell\open\command','',ExecCommand+' "%1"');  
 finally  
   free;  
 end;  
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 RegisterFileType('txt','TxtFile', 'Plain text','notepad.exe');  
end;

Автор: Dr Smth 20.10.2004, 09:51
Здорово. А можно ещё заставить сопоставить типу файла определённую иконку (например, размещённую в каталоге с самой программой)? И вообще, как в Delphi программным способом узнать путь к исполняемому файлу.

Автор: p0s0l 21.10.2004, 00:03
Цитата
И вообще, как в Delphi программным способом узнать путь к исполняемому файлу.

ExtractFilePath(Application.ExeName)

Цитата
А можно ещё заставить сопоставить типу файла определённую иконку (например, размещённую в каталоге с самой программой)?

В подключе DefaultIcon пишешь имя файла, содержащего иконку, и № иконки...

Автор: Dr Smth 26.10.2004, 08:31
Она должна быть обязательно в exe или dll?

Автор: p0s0l 26.10.2004, 10:50
Можно .ico указывать...
Объясню понятнее...
Предположим, надо у файла .psl сделать свою иконку.
В реестре в CLASSES_ROOT создаём ключ .psl.
У этого ключа есть параметр Default (если смотреть в RegEdit). Пишешь в него значение, к примеру: Posol.File
Теперь опять в CLASSES_ROOT создаём ключ, но теперь уже Posol.File
В нём создаём подключ DefaultIcon, и в этот подключ пишем, к примеру: C:\1.ico
В итоге код будет примерно таким:
Код
uses Registry;
...
var
 R : TRegistry;
begin
 R := TRegistry.Create;
 R.RootKey := HKEY_CLASSES_ROOT;
 R.OpenKey('.psl', True);
 R.WriteString('', 'Posol.Files');
 R.OpenKey('\Posol.Files\DefaultIcon', True);
 R.WriteString('', 'C:\1.ico');
 R.Free;
end;

Автор: Dr Smth 26.10.2004, 11:15
А ExtractFilePath(Application.ExeName) + '1.ico' можно в качестве пути?

Автор: p0s0l 26.10.2004, 11:44
Dr Smth, можно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)