Simonetos The Greek Ответов: 1

Как я могу получить количество сохраненных значков в файле?


В VB.NET проект, над которым я работаю, есть такой функция по имени "ReturnIcon"которая извлекает иконки из .exe-файла, .dll файлы, .Ико и т. д., и вернуть их в Bitmap.

Я хотел бы добавить эту возможность, чтобы я мог получить количество сохраненных значков для выбранного файла. Есть ли вообще добавить его в эту функцию? Должен ли я сделать новый для этого? Любой пример был бы действительно ценен!

Что я уже пробовал:

Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Integer, ByRef phiconLarge As Integer, ByRef phiconSmall As Integer, ByVal nIcons As Integer) As Integer

Public Function ReturnIcon(ByVal Path As String, ByVal Index As Integer, Optional ByVal small As Boolean = False) As Icon
    Dim bigIcon As Integer
    Dim smallIcon As Integer

    ExtractIcon(Path, Index, bigIcon, smallIcon, 1)
    If bigIcon = 0 Then
        ExtractIcon(Path, 0, bigIcon, smallIcon, 1)
    End If

    If bigIcon <> 0 Then
        If small = False Then
            Return Icon.FromHandle(bigIcon)
        Else
            Return Icon.FromHandle(smallIcon)
        End If
    Else
        Return Nothing
    End If
End Function
И вы можете использовать его вот так:
X_Control.Image = ReturnIcon(IconPath, 0, 0).ToBitmap

1 Ответов

Рейтинг:
6

CHill60

Я бы создал новую функцию (единственная цель и все такое).

Вы могли бы быть в состоянии адаптировать понятия по данной статье КП Извлечение значков из EXE или DLL файлов[^] (извините, что это C#) или этот MSDN Извлечение иконок с помощью win32 API ExtractIconEx[^]


Simonetos The Greek

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

Dim count As Integer = ExtractIcon(FilePath, -1, Nothing, Nothing, 0)

Maciej Los

5ed!