Extrahiert das Icon mit den festgelegten Abmessungen von der festgelegten Datei
#include <WinAPIShellEx.au3>
_WinAPI_ShellExtractIcon ( $sIcon, $iIndex, $iWidth, $iHeight )
$sIcon | Pfad und Name der Datei von der das Icon extrahiert werden soll |
$iIndex | Der 0-basierende Index des zu extrahierenden Icons. Falls dieser Wert eine negative Zahl ist, extrahiert diese Funktion das Icon dessen Ressourcen-ID identisch ist mit dem absoluten Wert von $iIndex. |
$iWidth | gewünschte horizontale Icongröße. |
$iHeight | gewünschte vertikale Icongröße. |
Erfolg: | das Handle des extrahierten Icons. |
Fehler: | 0. |
Falls das Icon mit den festgelegten Abmessungen in der Datei nicht gefunden wurde, wird das nächstgelegene Symbol ausgewählt und auf die festgelegten Abmessungen geändert.
Am Ende sollte man das Icon mit der Funktion _WinAPI_DestroyIcon() zerstören.
Suche nach SHExtractIcons in der MSDN Bibliothek.
#include <GUIConstantsEx.au3>
#include <SendMessage.au3>
#include <StaticConstants.au3>
#include <WinAPIIcons.au3>
#include <WinAPIShellEx.au3>
Global Const $STM_SETIMAGE = 0x0172
Local $Index = 0, $Total = _WinAPI_ExtractIconEx(@SystemDir & '\shell32.dll', -1, 0, 0, 0)
Local $hForm = GUICreate('Test ' & StringReplace(@ScriptName, '.au3', '()'), 160, 160)
Local $Button = GUICtrlCreateButton('Next', 50, 130, 70, 23)
Local $Icon = GUICtrlCreateIcon(@SystemDir & '\shell32.dll', 0, 69, 54, 32, 32)
Local $hIcon = GUICtrlGetHandle(-1)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $Button
$Index += 1
If $Index > $Total - 1 Then
$Index = 0
EndIf
_WinAPI_DestroyIcon(_SendMessage($hIcon, $STM_SETIMAGE, 1, _WinAPI_ShellExtractIcon(@SystemDir & '\shell32.dll', $Index, 32, 32)))
EndSwitch
WEnd