|
Wyciąganie ikon z plików.(przysłał SPECtrum) |
|
|
|
Napisał Administrator
|
|
sobota, 21 styczeń 2006 |
'To chyba jasne. Wyciąga ikonę z pliku.
'Użycie: ExtractIcon "Photoshp.exe", PictureBox, 16
'Użycie 2: ExtractIcon "Photoshp.exe", PictureBox, 32
'Ostatnia liczba określa rozmiar ikony. Może to być 16 lub 32
Option Explicit
Public Const MAX_PATH = 260
Public Const SHGFI_DISPLAYNAME = &H200
Public Const SHGFI_EXETYPE = &H2000
Public Const SHGFI_SYSICONINDEX = &H4000 ' Systemowy index ikony
Public Const SHGFI_LARGEICON = &H0' Duża icon
Public Const SHGFI_SMALLICON = &H1' Mała icon
Public Const ILD_TRANSPARENT = &H1' Wyświetl przeźroczyste tło
Public Const SHGFI_SHELLICONSIZE = &H4
Public Const SHGFI_TYPENAME = &H400
Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME _
Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX _
Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE
Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type
Public Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" _
(ByVal pszPath As String, _
ByVal dwFileAttributes As Long, _
psfi As SHFILEINFO, _
ByVal cbSizeFileInfo As Long, _
ByVal uFlags As Long) As Long
Public Declare Function ImageList_Draw Lib "comctl32.dll" _
(ByVal himl&, ByVal i&, ByVal hDCDest&, _
ByVal x&, ByVal y&, ByVal flags&) As Long
Public shinfo As SHFILEINFO
Public Function ExtractIcon(nazwaPliku As String, picBox As PictureBox, rozmIkony As Integer) As Long
Dim hImgSmall As Long ' Przejęcie systemowego wyświetlania ikon
Dim hImgLarge As Long
Dim FileName As String ' Nazwa pliku z ikoną
Dim r As Long
FileName = nazwaPliku
' Pobranie ikony z pliku
hImgSmall = SHGetFileInfo(FileName, 0, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_SMALLICON)
hImgLarge = SHGetFileInfo(FileName, 0, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON)
' Ustawienie PictureBox do wyświetlania ikony i Auto Odświerzania
picBox.AutoRedraw = True
picBox = LoadPicture()
' Wyświetlenie ikony 16x16 lub 32x32
If rozmIkony = 16 Then
r = ImageList_Draw(hImgSmall, shinfo.iIcon, picBox.hDC, 0, 0, ILD_TRANSPARENT)
ElseIf rozmIkony = 32 Then
r = ImageList_Draw(hImgLarge, shinfo.iIcon, picBox.hDC, 0, 0, ILD_TRANSPARENT)
End If
End Function
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. Powered by AkoComment 2.0! |