#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>

_Main()

Func _Main()
	Local $listview, $hImage
	Local $Wow64 = ""
	If @AutoItX64 Then $Wow64 = "\Wow6432Node"
	Local $AutoItDir = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $Wow64 & "\AutoIt v3\AutoIt", "InstallDir")

	GUICreate("Заменяет изображение", 410, 300)
	$listview = GUICtrlCreateListView("", 2, 2, 404, 268, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
	GUISetState()

	; Создаёт список изображений
	$hImage = _GUIImageList_Create(11, 11)
	AddIcon($hImage, $AutoItDir & "\Icons\au3script_v9.ico")
	AddIcon($hImage, $AutoItDir & "\Icons\au3script_v10.ico")
	AddIcon($hImage, $AutoItDir & "\Icons\filetype-blank.ico")
	_GUICtrlListView_SetImageList($listview, $hImage, 1)

	; Добавляет колонки с иконками в заголовках
	_GUICtrlListView_AddColumn($listview, "Колонка 1", 100, 0, 0)
	_GUICtrlListView_AddColumn($listview, "Колонка 2", 100, 1, 1)
	_GUICtrlListView_AddColumn($listview, "Колонка 3", 100, 2, 2)
	_GUICtrlListView_AddColumn($listview, "Колонка 4", 100)

	; Цикл выполняется, пока окно не будет закрыто
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>_Main

; Это долгий способ добавления значка. Вместо этого используйте _GUIImageList_AddIcon
Func AddIcon($hWnd, $sFile, $iIndex = 0)
	Local $pIcon, $tIcon, $hIcon

	$tIcon = DllStructCreate("int Icon")
	$pIcon = DllStructGetPtr($tIcon)
	_WinAPI_ExtractIconEx($sFile, $iIndex, 0, $pIcon, 1) ; извлекает иконку из файла
	$hIcon = DllStructGetData($tIcon, "Icon")
	_GUIImageList_ReplaceIcon($hWnd, -1, $hIcon) ; -1 означает добавление иконки в конец списка, вместо замены
	_WinAPI_DestroyIcon($hIcon)
EndFunc   ;==>AddIcon