Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как показать иконку, ассоциированную с данным типом файла

Delphi , Графика и Игры , ICO

Как показать иконку, ассоциированную с данным типом файла


Приходит программист в магазин. Там продавщица - полная такая тетенька. Программист (меланхолично оглядевшись):
- Бутылку пива и пачку презервативов. Продавщица:
- Это ты девушку охмурить бутылкой пива собрался? Вино надо дорогое покупать.... Программист (отрешенно):
- Да нет. Пиво я выпью, когда она уйдет.


uses
  ShellAPI;
...
procedure TForm1.Button1Click(Sender: TObject);
var
  Icon: hIcon;
  IconIndex: word;
begin
  IconIndex := 1;
  Icon := ExtractAssociatedIcon(HInstance,
    Application.ExeName, IconIndex);
  DrawIcon(Canvas.Handle, 10, 10, Icon);
end;

Here's the translation of the text into Russian:

Классический пример юмора программиста!

Теперь, когда мы готовы к задаче, давайте рассмотрим, как отобразить иконку, связанную с типом файла.

Код, который я предоставил, почти корректен, но есть несколько проблем:

  1. ExtractAssociatedIcon ожидает расширение файла в качестве второго параметра, а не имя исполняемого файла приложения.
  2. Вы используете HInstance, который является.handle модуля, содержащего текущий исполняемый файл. Однако в этом случае вам нужно указать индекс иконки и тип файла.

Вот обновленная версия вашего кода:

procedure TForm1.Button1Click(Sender: TObject);
var
  Icon: HICON;
  IconIndex: word;
begin
  IconIndex := 1; // Замените на желаемый индекс иконки (например, 1 для файла .txt)
  Icon := ExtractAssociatedIcon(0, '.txt', IconIndex); // Укажите расширение файла
  DrawIcon(Canvas.Handle, 10, 10, Icon);
end;

В этом примере мы извлекаем иконку, связанную с файлами .txt (замените на желаемое расширение файла). Функция DrawIcon используется для отображения иконки на канвасе.

Если вы хотите отобразить разные иконки для каждого типа файла, можно использовать цикл для перебора доступных иконок и отображать их соответствующим образом. Например:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to GetSystemMetrics(SM_CXICON) - 1 do begin
    IconIndex := i + 1; // Начните с 1, а не с 0
    Icon := ExtractAssociatedIcon(0, '.txt', IconIndex);
    if Icon <> 0 then begin
      DrawIcon(Canvas.Handle, 10, 10, Icon);
    end;
  end;
end;

В этом примере мы используем функцию GetSystemMetrics для получения количества доступных иконок и перебираем их. Для каждой иконки мы извлекаем ее с помощью ExtractAssociatedIcon и отображаем на канвасе, если она не null.

Не забудьте освободить handle иконки, когда вы закончите с ней, чтобы избежать утечек памяти:

DestroyIcon(Icon);

Надеюсь, это поможет!

В статье описывается, как использовать функцию ShellAPI для отображения иконки, ассоциированной с типом файла, в приложении на языке Delphi.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: ICO ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-07-13 06:58:07/0.0034739971160889/0