Declare Function ExtractIcon Lib "shell32" Alias "ExtractIconA" _ (ByVal hInst as Long, _ ByVal lpszExeFileName As String, _ ByVal nIconIndex As Long) As Long
ExtractIcon извлекает один значок из файлов *.exe, *.dll и *.ico. Также функция может определить количество значков, хранимых в файле.
В случае ошибки (не найден требуемый файл) функция возвращает 1. Если найден требуемый значок в файле, функция возвращает 0. В успешном случае функция возвращает число значков, хранимых в файле (если указан соответствующий параметр) или описатель извлекаемого значка.
' Отобразим первый значок (значение индекса 0), хранимый в Блокноте ' C:\Windows\notepad.exe на окне Form1. ' Значок должен быть уничтожен при завершении работы программы Dim hIcon As Long ' Описатель, полученный от исполняемого файла Dim retval As Long ' возвращаемое значение ' Извлекаем первый значок из заданного файла hIcon = ExtractIcon(App.hInstance, "C:\Windows\notepad.exe", 0) ' Отобразим значок, если мы успешно извлекли его If hIcon = 0 Then Debug.Print "Неудача при извлечении значка - выходим из программы" End Else ' Отобразим значок в координатах (100, 75) на окне Form1 retval = DrawIcon(Form1.hDC, 100, 75, hIcon) ' Хотя изображение значка все еще видимо, сам значок не используется ' Поэтому мы уничтожаем его, чтобы освободить ресурсы retval = DestroyIcon(hIcon) End If