public static uint RegisterShellNotify(IntPtr handle)
        {
            SHChangeNotifyEntry entry = new SHChangeNotifyEntry();
            entry.pIdl = ShellBrowser.GetDesctopPidl();
            entry.Recursively = true;

            return RegisterShellNotify(handle, entry);
        }
        public ShellBrowserUpdater(ShellBrowser browser)
        {
            this.browser = browser;
            CreateHandle(new CreateParams());

            SHChangeNotifyEntry entry = new SHChangeNotifyEntry();
            entry.pIdl = browser.DesktopItem.PIDLRel.Ptr;
            entry.Recursively = true;

            notifyId = RegisterShellNotify(this.Handle, entry);
        }
 public static uint RegisterShellNotify(IntPtr handle, SHChangeNotifyEntry entry)
 {
     return Shell32.SHChangeNotifyRegister(handle, SHCNRF.InterruptLevel | SHCNRF.ShellLevel, SHCNE.AllEvents | SHCNE.Interrupt, WM.ShNotify, 1, new[] { entry });
 }
        private void RegisterShellNotify()
        {
            SHChangeNotifyEntry entry = new SHChangeNotifyEntry();
            entry.pIdl = ShellHelper.GetPathPIDL(this.Path);
            entry.Recursively = this.IncludeSubdirectories;

            this.notifyId = Shell32.SHChangeNotifyRegister(this.Handle, SHCNRF.NewDelivery | SHCNRF.InterruptLevel | SHCNRF.ShellLevel, SHCNE.AllEvents, WM.ShNotify, 1, new[] { entry });
        }