Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Как изменить иконку файла с собственным разширения


Автор: VolMyr 17.7.2008, 18:10
 smile  мне нужно чтобы файлы с разширеням *.bee имели индивидуальный вид, например картинка на которой нарисовано пчела. Как это сделать?

Автор: Qu1nt 17.7.2008, 18:15
Код

uses
  Registry;

procedure AppRegister(const Ext, IconPath: string);
begin
  with TRegistry.Create do
  begin
    RootKey := HKEY_CLASSES_ROOT;
    LazyWrite := False;
    OpenKey('.' + Ext + '\shell\open\command', True);
    WriteString('', Application.ExeName + ' "%1"');
    CloseKey;
    OpenKey('.' + Ext + '\DefaultIcon', True);
    WriteString('', IconPath);
    CloseKey;
    Free;
  end;
  SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(PChar('RegistrySection')));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AppRegister('bee', 'c:\bee.ico');
end;

Автор: VolMyr 17.7.2008, 23:58
а как сделать так, чтобы я мог использовать нарисовану мною иконку, потому что даные файлы ипользуют стандартную иконку делфи-приложения?

Автор: VolMyr 18.7.2008, 00:49
...чтоби иконка приложения и иконка файла были разными

Автор: Qu1nt 18.7.2008, 08:07
Отредактировал свой предыдущий пост. Не забудь поменять путь к иконке.

Автор: Alkash 18.7.2008, 08:08
Нарисовать свою и использовать, как показано выше

Автор: THandle 18.7.2008, 08:58
Цитата(Qu1nt @  17.7.2008,  19:15 Найти цитируемый пост)
    WriteString('', IconPath);
    CloseKey;
    Free;
  end;



CloseKey здесь не нужен, так как:

Код

destructor TRegistry.Destroy;
begin
  CloseKey;
  inherited;
end;

Автор: Qu1nt 18.7.2008, 10:03
THandle, угу, но вот примеры мы пишем, в первую очередь, для новичков smile 

Автор: uranpro 18.7.2008, 11:30
Qu1nt, не работает код у меня(( мб из-за того, что я пытаюсь создать запись для уже созданного разрешения(txt, dpr, pas ...) ???

Автор: Poseidon 25.7.2008, 10:23
А доступ к реестру есть? В смысле права есть на изменение записей реестра?

Автор: uranpro 25.7.2008, 17:50
Poseidon, ыыы))) любой юзер может поменять записи в реестре

Автор: Poseidon 27.7.2008, 23:51
Цитата(uranpro @  25.7.2008,  17:50 Найти цитируемый пост)
Poseidon, ыыы))) любой юзер может поменять записи в реестре 
Да ну... Хотелось бы увидеть как юзер с правами гостя или хотя бы пользователя меняет что-то в ветке HKEY_LOCAL_MACHINE. 

Забегая сразу на перед скажу, что писать все только "для админов системы" - это плохой тон.

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