Программный код, используемый для извлечения иконок из исполняемого файла (delphi32.exe в этом случае) и отображения их на форме. Вот разбивка кода:
Секция интерфейса определяет два типа: ThIconArray, который является массивом типа hIcon, и PhIconArray, который является указателем на ThIconArray.
Три функции объявлены:
ExtractIconExA: извлекает иконки из исполняемого файла в формате ANSI.
ExtractIconExW: извлекает иконки из исполняемого файла в формате Unicode.
ExtractIconEx: является алиасом для ExtractIconExA, используемым для извлечения иконок в формате ANSI.
В процедуре Button1Click при нажатии кнопки:
Количество иконок в исполняемом файле получается с помощью ExtractIconEx.
Если есть иконки, то массивы больших и маленьких иконок выделяются.
Иконки извлекаются из исполняемого файла с помощью ExtractIconEx.
Цикл iterates over each icon:
Он рисует большую иконку на канвасе формы с помощью DrawIcon.
Создает TIcon и TBitmap, устанавливает handle маленькой иконки в текущей иконке, и затем рисует маленькую иконку на TBitmap.
TBitmap затем растягивается и рисуется на канвасе формы в конкретной позиции.
Наконец, выделяемая память для больших и маленьких иконок освобождается.
Примечание: Этот код использует встроенные функции и типы Delphi, поэтому он может не работать напрямую в других языках программирования, таких как C++. Кроме того, обработка ошибок минимальна в этом коде, поэтому вам может потребоваться добавить более robust error handling, если вы планируете использовать этот код в производственной среде.
Как получить иконку из файла ICO, EXE или DLL в приложении на языке Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.