[DllImport("user32.dll")] public static extern long SendMessageTimeout( int hWnd, int Msg, int wParam, string lParam, int fuFlags, int uTimeout, out int lpdwResult); private const int HWND_BROADCAST = 0xffff; private const int WM_SETTINGCHANGE = 0x001A; private const int SPI_SETNONCLIENTMETRICS = 0x0002; public bool ResizeDesktopIcons(int size) { //ключ отвечающий за размер иконок string key = @"Control Panel\Desktop\WindowMetrics"; RegistryKey desktop = null; int res = 0; try { //открываем ключ реестра desktop = Registry.CurrentUser.OpenSubKey(key, true); //устанавливаем новый размер иконок desktop.SetValue("Shell Icon Size", size, RegistryValueKind.String); desktop.Flush(); //очистка кеша иконок SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, string.Empty, SPI_SETNONCLIENTMETRICS, 5000, out res); return true; } catch (Win32Exception ex) { MessageBox.Show(ex.ToString()); ; return false; } finally { // Если ключ остается открытым то закрываем его его if (desktop != null) desktop.Close(); } }Для работы вам понадобится подключить следующие пространства имен:
using System.ComponentModel; using System.Runtime.InteropServices;Внимание!
Что бы изменения вступили в силу, необходимо перезагрузить ПК!
Комментариев нет:
Отправить комментарий
Большая просьба, не писать в комментариях всякую ерунду не по теме!