• XSS.stack #1 – первый литературный журнал от юзеров форума

[C#] Resresh Explorer Windows - Обновить проводник

r3xq1

(L3) cache
Пользователь
Регистрация
14.01.2020
Сообщения
233
Реакции
146
Простое решение для обновления проводника 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
}
Создадим класс RefreshExp.cs
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.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх