знаю что стандартные иконки находятся в файле shell32.dll , адля определённых фарматов в HKEY_CLASSES_ROOT/.расширение/
как мне получить иконки типа System.Drawing.Image?
плиз поподробнее...
Private Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlags As Integer) As IntPtr
Дело, скорее всего, в нерациональном подходе к построению списка: изображения надо кэшировать и брать для каждого расширения иконку только один раз.ugin_95 писал(а):ели список большой то работает оочень медленно
Путь в функцию дается именно для вытягивания из него расширения файла. Сам не пробовал, но, теоретически, туда можно отправлять что-то типа "SomeFile.ext", где ext - искомое расширение. Полный путь, по идее, нужен только для вытягивания изображений из исполняемых файлов.ugin_95 писал(а):или по раширению файла
ExtractIcon(Ex) и номер иконки тебе в помощь.ugin_95 писал(а):Как получить эти иконки ? (для дисков, открытой папки, полной карзины и т.п.)
ugin_95 писал(а):вообшем все иконки из "shell32.dll" не используя путь к файлу или папке
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("shell32.dll")> _
Private Shared Function ExtractIcon(ByVal hInst As IntPtr, ByVal lpszExeFileName$, ByVal nIconIndex As Integer) As IntPtr
End Function
<DllImport("user32.dll")> _
Private Shared Function DestroyIcon(ByVal hIcon As IntPtr) As Integer
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim System32$ = Environment.GetFolderPath(Environment.SpecialFolder.System)
Dim fileName$ = IO.Path.Combine(System32, "shell32.dll")
Dim hIcon As IntPtr
Dim MyIcon As System.Drawing.Icon
Dim index As Integer
ListView1.LargeImageList = ImageList1
Do
hIcon = ExtractIcon(IntPtr.Zero, fileName, index)
If hIcon = 0 Then Exit Do
MyIcon = System.Drawing.Icon.FromHandle(hIcon)
ImageList1.Images.Add(MyIcon)
ListView1.Items.Add("icon" & index.ToString, index)
DestroyIcon(hIcon)
index += 1
Loop
End Sub
End Class
Сейчас этот форум просматривают: Yandex-бот и гости: 5