Want more features on Pastebin? Sign Up, it's FREE!
Guest

Refresh file thumbnail C#

By: a guest on Sep 3rd, 2010  |  syntax: C#  |  size: 1.22 KB  |  views: 243  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.InteropServices;
  6.  
  7. namespace Unstub
  8. {
  9.     class ShellNotification
  10.     {
  11.         [DllImport("shell32.dll", CharSet = CharSet.Auto)]
  12.         public static extern Int32 SHParseDisplayName(
  13.             [MarshalAs(UnmanagedType.LPWStr)] String pszName,
  14.             IntPtr pbc,
  15.             out IntPtr ppidl,
  16.             UInt32 sfgaoIn,
  17.             out UInt32 psfgaoOut);
  18.         [DllImport("shell32.dll", CharSet = CharSet.Auto)]
  19.         internal static extern void SHChangeNotify(
  20.             UInt32 wEventId,
  21.             UInt32 uFlags,
  22.             IntPtr dwItem1,
  23.             IntPtr dwItem2);
  24.  
  25.         [Flags]
  26.         private enum ShellChangeNotificationEvents : uint
  27.         {
  28.             //...
  29.             SHCNE_UPDATEITEM = 0x00002000,
  30.             //...
  31.         }
  32.  
  33.         private enum ShellChangeNotificationFlags
  34.         {
  35.             //...
  36.             SHCNF_FLUSH = 0x1000,
  37.             //...
  38.         }
  39.  
  40.         public static void refreshThumbnail(string path)
  41.         {
  42.             try
  43.             {
  44.                 uint iAttribute;
  45.                 IntPtr pidl;
  46.                 SHParseDisplayName(path, IntPtr.Zero, out pidl, 0, out iAttribute);
  47.                 SHChangeNotify(
  48.                     (uint)ShellChangeNotificationEvents.SHCNE_UPDATEITEM,
  49.                     (uint)ShellChangeNotificationFlags.SHCNF_FLUSH,
  50.                     pidl,
  51.                     IntPtr.Zero);
  52.             }
  53.             catch { }
  54.         }
  55.     }
  56. }
clone this paste RAW Paste Data