日期:2014-05-17  浏览次数:21184 次

如何刷新文件夹?
用Shell扩展写了一个根据文件不同状态覆盖不同图标的程序,但是当文件状态改变时图标不能及时更新,要手动刷新文件夹才有效。请问有没有办法让程序去刷新文件夹呢?
DirectoryInfo.Refreh()是没有用的,在网上找过刷新图标缓存的方法:

[DllImport("User32.dll", EntryPoint = "SendMessage")]
private static extern int SendMessage(IntPtr hWnd,int Msg,int wParam,int lParam);

public const int WM_SETTINGCHANGE = 26;
public const int HWND_BROADCAST = 65535;

static void Main(string[] args)
{
      int value = Convert.ToInt32(Registry.GetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "Shell Icon Size", -1).ToString());
      Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "Shell Icon Size", value - 1, RegistryValueKind.String);
      SendMessage(new IntPtr(HWND_BROADCAST), WM_SETTINGCHANGE, 0, 0);
      Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "Shell Icon Size", value, RegistryValueKind.String);
      SendMessage(new IntPtr(HWND_BROADCAST), WM_SETTINGCHANGE, 0, 0);
}

也不起作用。
------解决方案--------------------
 (*^__^*) 嘻嘻
------解决方案--------------------
没试过。应该可以吧

------解决方案--------------------
搞病毒?