Что нового

Путь к иконке файла

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Про какую иконку вы говорите, про ту что отображается в проводнике? Тогда она в каком то смысле не имеет путь, это же получается ресурс файла *.exe
 

erlik

Продвинутый
Сообщения
317
Репутация
84
Если вам просто узнать индекс иконки как ресурса файла, то вот так:
Слева диалог выбора иконки из UDF IconChooser.au3, справа - программа enumicons.exe (аналогов - море).

В скриптах используется имя файла и индекс\имя иконки.
Иконка, непосредственно отображаемая для файла, имеет индекс 0. И обычно этот индекс даже не указывается.
 
Автор
G

getigor01

Новичок
Сообщения
23
Репутация
2
MnM,
Да. И как создать иконку в GUI окне опираясь на путь к exe файлу?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
getigor01 [?]
как создать иконку в GUI окне опираясь на путь к exe файлу?
Например, так.
Код:
#include <APIConstants.au3>;3.3.6(8).1, 3.3.10.2 - APIResConstants.au3
#include <WinAPIEx.au3>;3.3.6(8).1, 3.3.10.2 - WinAPIRes.au3
#include <GUIConstantsEx.au3>

Opt('MustDeclareVars', 1)

Global $sFile = @WindowsDir & '\explorer.exe', $aData, $iSize = 32, $iW = 10 + 5 * ($iSize + 10), $iH, $iCount

$aData = _WinAPI_EnumResourceNames($sFile, $RT_GROUP_ICON)

$iH = 10 + ($iSize + 10) * Ceiling($aData[0] / 5)

GUICreate('Icon count = ' & $aData[0], $iW, $iH)
For $i = 0 To 4
	For $j = 0 To 4
		$iCount += 1
		If $iCount > $aData[0] Then ExitLoop 2
		ConsoleWrite('Icon name: ' & $aData[$iCount] & @LF)
		GUICtrlCreateIcon($sFile, $aData[$iCount], 10 + $j * ($iSize + 10), 10 + $i * ($iSize + 10), $iSize, $iSize)
	Next
Next

GUISetState()
While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd
 
Автор
G

getigor01

Новичок
Сообщения
23
Репутация
2
madmasles

Малость смущает кое-что в этом коде
Код:
#include <WinAPIEx.au3>


Для этой библиотеки в топике указаны версии AutoIT только 3.3.6.1 и 3.3.8.x :scratch:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
getigor01,
В версии 3.3.10.2 функция _WinAPI_EnumResourceNames() находится в WinAPIRes.au3, а константа $RT_GROUP_ICON в APIResConstants.au3.
 
Верх