Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

### Как использовать "стандартные" значки типов дисков в Delphi для универсального отображения на разных компьютерах

Delphi , Синтаксис , Справочник по API-функциям

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

Решение проблемы

Для решения этой проблемы можно использовать функцию SHGetStockIconInfo, которая позволяет получить значок стандартного системного объекта. Эта функция принимает идентификатор значка (например, SIID_DRIVEFIXED для жесткого диска) и возвращает индекс этого значка в системном списке значков.

Пример кода

function GetDefaultSystemIcon(ASiid: Integer): Integer;
var
  sInfo: TSHStockIconInfo;
begin
  sInfo.cbSize := SizeOf(TSHStockIconInfo);
  if S_OK = SHGetStockIconInfo(ASiid, SHGSI_SYSICONINDEX, sInfo) then
    Result := sInfo.iSysImageIndex
  else
    Result := -1;
end;

Вызов функции для получения индекса стандартного значка жесткого диска:

GetDefaultSystemIcon(SIID_DRIVEFIXED);

Подробности

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

unit MyShellAPI;

interface

uses
  Windows;

type
  SHSTOCKICONID = Integer;

  TSHStockIconInfo = record
    cbSize: Cardinal;
    hIcon: HICON;
    iSysImageIndex,
    iIcon: Integer;
    szPath: packed array [0..MAX_PATH-1] of Char;
  end;

const
  // ... здесь перечислены константы для различных типов значков ...

function SHGetStockIconInfo(siid: SHSTOCKICONID; uFlags: UINT; var psii: TSHStockIconInfo): HRESULT; stdcall;

implementation

const
  SHELL32 = 'shell32.dll';

function SHGetStockIconInfo; external SHELL32 name 'SHGetStockIconInfo';

end.

Важные замечания

  • Функция SHGetStockIconInfo доступна начиная с Windows Vista.
  • Если вы используете Delphi 7, вам потребуется добавить модуль MyShellAPI вручную, так как в нем нет предварительного объявления этой функции.
  • При использовании статической ссылки на shell32.dll в Delphi 7 приложение может упасть на Windows XP, так как в этой версии shell32.dll нет экспорта функции SHGetStockIconInfo.
  • Для повышения совместимости можно использовать динамическую загрузку функции с помощью GetProcAddress.

Используя этот подход, вы сможете универсально отображать значки типов дисков в вашем приложении на Delphi, независимо от операционной системы и конкретного компьютера.

Создано по материалам из источника по ссылке.

**Контекст**: Пользователь ищет способ получить стандартные системные значки для дисков и устройств в приложении на Delphi, чтобы универсально использовать их на разных компьютерах.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Справочник по API-функциям ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:19:42/0.0034220218658447/0