Простое решение для обновления проводника windows
Создадим класс NativeMethods.cs
Создадим класс RefreshExp.cs
Теперь достаточно будет вызвать метод:
Для чего это нужно?
Допустим мы хотим зайти в реестр и убрать видимость скрытых папок, но после изменения значения ничего не происходит пока пользователь не обновит проводник вручную.
Для этого и создана эта функция чтобы можно было автоматически обновить проводник windows.
Создадим класс NativeMethods.cs
C#:
internal static class NativeMethods
{
#region For Refresh WinExplorer
[DllImport("user32")]
public static extern int PostMessage(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string className, string caption);
[DllImport("user32", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr startChild, string className, string caption);
#endregion
}
C#:
public class RefreshExp
{
public static void Inizialize()
{
IntPtr d = NativeMethods.FindWindow("Progman", "Program Manager");
d = NativeMethods.FindWindowEx(d, IntPtr.Zero, "SHELLDLL_DefView", null);
d = NativeMethods.FindWindowEx(d, IntPtr.Zero, "SysListView32", null);
NativeMethods.PostMessage(d, 0x100, new IntPtr(0x74), IntPtr.Zero);
NativeMethods.PostMessage(d, 0x101, new IntPtr(0x74), new IntPtr(1 << 31));
}
}
RefreshExp.Inizialize();Для чего это нужно?
Допустим мы хотим зайти в реестр и убрать видимость скрытых папок, но после изменения значения ничего не происходит пока пользователь не обновит проводник вручную.
Для этого и создана эта функция чтобы можно было автоматически обновить проводник windows.