Что нового

Принудительное обновление иконок в системе

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 713
Вот написал функцию для обновления иконок в системе. В XP работает как нужно, но нет сейчас возможности проверить на Vista/7. Просьба, у кого установлена Vista/7 проверить нижеследующий пример на работоспособность в этих системах.

Код:
#Include <Constants.au3>
#Include <GUIListView.au3>
#Include <WinAPIEx.au3>

Func _RebuildIconCache()

	Local $Data, $Item = 0, $hSysListView32 = 0

	$Data = _WinAPI_EnumChildWindows(_WinAPI_GetDesktopWindow(), 0)
	If IsArray($Data) Then
		For $i = $Data[0][0] To 1 Step -1
			If ($Data[$i][1] = 'SysListView32') And (_WinAPI_GetWindowLong($Data[$i][0], $GWL_ID) = 1) Then
				$hSysListView32 = $Data[$i][0]
				ExitLoop
			EndIf
		Next
	EndIf
	If Not $hSysListView32 Then
		Return 0
	EndIf
	$Data = _GUICtrlListView_GetItemCount($hSysListView32)
	If $Data Then
		Dim $Item[$Data][2]
	EndIf
	For $i = 0 To UBound($Item) - 1
		$Data = _GUICtrlListView_GetItemPosition($hSysListView32, $i)
		If IsArray($Data) Then
			For $j = 0 To 1
				$Item[$i][$j] = $Data[$j]
			Next
		EndIf
	Next
    $Data = RegRead('HKCU\Control Panel\Desktop\WindowMetrics', 'Shell Icon Size')
    If @error Then
		Return 0
	EndIf
    RegWrite('HKCU\Control Panel\Desktop\WindowMetrics', 'Shell Icon Size', 'REG_SZ', $Data + 1)
    If @error Then
		Return 0
	EndIf
	_GUICtrlListView_BeginUpdate($hSysListView32)
	_WinAPI_SendMessageTimeout(0xFFFF, 0x001A, 0x002A, 0, 5000, $SMTO_ABORTIFHUNG)
    RegWrite('HKCU\Control Panel\Desktop\WindowMetrics', 'Shell Icon Size', 'REG_SZ', $Data)
	_WinAPI_SendMessageTimeout(0xFFFF, 0x001A, 0x002A, 0, 5000, $SMTO_ABORTIFHUNG)
	For $i = 0 To UBound($Item) - 1
		_GUICtrlListView_SetItemPosition32($hSysListView32, $i, $Item[$i][0], $Item[$i][1])
	Next
	_GUICtrlListView_EndUpdate($hSysListView32)
	Return 1
EndFunc   ;==>_RebuildIconCache

_RebuildIconCache()
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
У меня это занимает около 2-ух секунд, нельзя этот процесс ускорить?
И ещё, обязательно расбрасывать иконки на рабочем столе и упорядочивать их заного, возможно тут задержка?

P.S
XP (Rus) SP3.
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
На Вин 7 работает, обновление - 2 секунды.
 
Верх