private void Initialize()
        {
            this.IsAvailable = false;
            VirtualDesktopCache.Initialize(this._assembly);

            this.VirtualDesktopManager = (IVirtualDesktopManager)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID.VirtualDesktopManager));
            if (ProductInfo.OSBuild >= 21359)
            {
                this.VirtualDesktopManagerInternal = new VirtualDesktopManagerInternal21359(this._assembly);
            }
            else if (ProductInfo.OSBuild >= 21313)
            {
                this.VirtualDesktopManagerInternal = new VirtualDesktopManagerInternal21313(this._assembly);
            }
            else if (ProductInfo.OSBuild >= 20231)
            {
                this.VirtualDesktopManagerInternal = new VirtualDesktopManagerInternal20231(this._assembly);
            }
            else
            {
                this.VirtualDesktopManagerInternal = new VirtualDesktopManagerInternal10240(this._assembly);
            }
            this.VirtualDesktopNotificationService = new VirtualDesktopNotificationService(this._assembly);
            this.VirtualDesktopPinnedApps          = new VirtualDesktopPinnedApps(this._assembly);
            this.ApplicationViewCollection         = new ApplicationViewCollection(this._assembly);

            this._listener?.Dispose();
            this._listener   = this.VirtualDesktopNotificationService.Register(VirtualDesktopNotification.CreateInstance(this._assembly));
            this.IsAvailable = true;
        }
        private void Initialize()
        {
            VirtualDesktopCache.Initialize(this._assembly);

            this.VirtualDesktopManager             = (IVirtualDesktopManager)Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID.VirtualDesktopManager));
            this.VirtualDesktopManagerInternal     = new VirtualDesktopManagerInternal(this._assembly);
            this.VirtualDesktopNotificationService = new VirtualDesktopNotificationService(this._assembly);
            this.VirtualDesktopPinnedApps          = new VirtualDesktopPinnedApps(this._assembly);
            this.ApplicationViewCollection         = new ApplicationViewCollection(this._assembly);

            this._listener?.Dispose();
            this._listener = this.VirtualDesktopNotificationService.Register(VirtualDesktopNotification.CreateInstance(this._assembly));
        }
        public IDisposable Register(VirtualDesktopNotification pNotification)
        {
            var dwCookie = this.Invoke <uint>(Args(pNotification));

            return(Disposable.Create(() => this.Unregister(dwCookie)));
        }