Inspired =)
  
Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005
Репутация: 6 Всего: 191
|
Накидал модуль. В аттаче на всякий случай весь проект. Код | Option Explicit
' Declarations Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal HWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long Private Declare Function EnumWindows Lib "user32" _ (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _ (ByVal HKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _ ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal HKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _ lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _ (ByVal HKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _ ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal HKey As Long) As Long ' Constants Const WM_WININICHANGE = &H1A Const WM_COMMAND = &H111 Const ShellIconSize = "Shell Icon Size" Const HKEY_CURRENT_USER = &H80000001 Const KEY_ALL_ACCESS = 983103 Const REG_SZ = 1
Public Function UpdateAllWindowsCallback(ByVal HWnd As Long, ByVal lParam As Long) As Long Call SendMessage(HWnd, WM_WININICHANGE, 0, 0) UpdateAllWindowsCallback = True End Function
Public Sub UpdateAllWindows() Call EnumWindows(AddressOf UpdateAllWindowsCallback, 0) End Sub
Public Sub RefreshDesktop() Dim Wnd As Long Wnd = FindWindow("Progman", vbNullString) If Wnd <> 0 Then Call SendMessage(Wnd, WM_COMMAND, &HA065, 0) Else Call UpdateAllWindows End If End Sub
Public Sub RebuildIconCache() Dim N As String Dim O As String Dim SZ As Long Dim HKey As Long Dim Res As Long Dim StrSize As Long ' Open Key Call RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\Desktop\WindowMetrics", 0, _ KEY_ALL_ACCESS, HKey) ' Get Value Length Call RegQueryValueEx(HKey, ShellIconSize, 0, 0, 0, StrSize) ' Get Original Value O = Space(StrSize) Res = RegQueryValueEx(HKey, ShellIconSize, 0, REG_SZ, O, StrSize) If Res <> 0 Then O = "32" N = O + 1 ' Set Another Value Call RegSetValueEx(HKey, ShellIconSize, 0, REG_SZ, N, Len(N)) ' Update All Windows In System Call UpdateAllWindows ' Restore Old Value Call RegSetValueEx(HKey, ShellIconSize, 0, REG_SZ, O, Len(O)) ' Update Once Again Call UpdateAllWindows Call RefreshDesktop ' Close Key Call RegCloseKey(HKey) End Sub
|
Пример использования: Код | ' Rebuild Icon Cache When <ButtonClick> Occurs... Private Sub Command1_Click() Call RebuildIconCache End Sub
|
Присоединённый файл ( Кол-во скачиваний: 32 )
RebuildIconCache.rar 2,17 Kb
|