C#/.NET: Seriously Refresh Desktop Icons / Clear Desktop Icon Cache
Tested.
In use at work.
Interesting
In use at work.
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace ConsoleApplication1
{
class Program
{
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern long SendMessageTimeout(
int hWnd,
int Msg,
int wParam,
string lParam,
int fuFlags,
int uTimeout,
out int lpdwResult
);
// http://www.programmingforums.org/post87847-9.html
static void Main(string[] args)
{
// get the the original Shell Icon Size registry string value to 4
RegistryKey k = Registry.CurrentUser.OpenSubKey("Control Panel").OpenSubKey("Desktop").OpenSubKey("WindowMetrics", true);
Object OriginalIconSize = k.GetValue("Shell Icon Size");
// set the Shell Icon Size registry string value to 4
k.SetValue("Shell Icon Size", "33");
k.Flush(); k.Close();
// broadcast WM_SETTINGCHANGE to all window handles
int res = 0;
SendMessageTimeout(0xffff, 0x001A, 0, "", 0x0002, 5000, out res);
//SendMessageTimeout(HWD_BROADCAST,WM_SETTINGCHANGE,0,"",SMTO_ABORTIFHUNG,5 seconds, return result to res)
// set the Shell Icon Size registry string value to original value
k = Registry.CurrentUser.OpenSubKey("Control Panel").OpenSubKey("Desktop").OpenSubKey("WindowMetrics", true);
k.SetValue("Shell Icon Size", OriginalIconSize);
k.Flush(); k.Close();
SendMessageTimeout(0xffff, 0x001A, 0, "", 0x0002, 5000, out res);
}
}
}
Interesting
0 Comments:
Post a Comment
<< Home