Icon = C:\Users\sergey\Desktop\32.ico
oIE := ComObjCreate("InternetExplorer.Application")
IEHWND := oIE.HWND
hIcon := ExtractIcon(Icon, 0, 16)
DetectHiddenWindows, On
PostMessage, WM_SETICON := 0x80,, hIcon,, ahk_id %IEHWND%
oIE.Visible := true
return
ExtractIcon(sFile, IconNumber, IconSize) ; возвращает хэндл иконки из dll, exe, cur, ico файлов
{
coding := A_IsUnicode ? "W" : "A"
SplitPath, sFile,,, ext
if !(ext ~= "exe|dll|cpl")
IconNumber := 0
if PrivateExtractIcons := DllCall("GetProcAddress"
, Ptr, DllCall("LoadLibrary", Str, "User32", Ptr)
, A_IsUnicode ? "AStr" : "Str", "PrivateExtractIcons" . coding, Ptr)
{
Result := DllCall(PrivateExtractIcons, Str, sFile, Int, IconNumber-1
, Int, IconSize, Int, IconSize, PtrP, hIcon, UIntP, 0, UInt, 1, UInt, 0)
if !Result
MsgBox, 16,, % "Не удалось извлечь икону.`nОшибка " A_LastError "."
else if (Result = 0xFFFFFFFF || Result = -1)
MsgBox, 16,, Указанный файл не найден!
}
else
{
if !DllCall("Shell32\ExtractIconEx" . coding, Str, sFile, Int, IconNumber-1, PtrP, hIconLarge, PtrP, hIconSmall, UInt, 1)
{
MsgBox, 16,, % "Не удалось извлечь иконку.`nОшибка " A_LastError "."
return
}
SysGet, SmallIconSize, % SM_CXSMICON
if (IconSize <= SmallIconSize)
DllCall("DestroyIcon", Ptr, hIconLarge)
, hIcon := hIconSmall
else
DllCall("DestroyIcon", Ptr, hIconSmall)
, hIcon := hIconLarge
hIcon := DllCall("CopyImage", Ptr, hIcon, UInt, IMAGE_ICON
, Int, IconSize, Int, IconSize, UInt, LR_COPYRETURNORG|LR_COPYDELETEORG, Ptr)
}
Return hIcon
}