/// <summary>
        /// Returns the virtual desktop of the specified identifier.
        /// </summary>
        public static VirtualDesktop FromId(Guid desktopId)
        {
            VirtualDesktopHelper.ThrowIfNotSupported();

            IVirtualDesktop desktop;

            try
            {
                desktop = ComInternal.FindDesktop(desktopId);
            }
            catch (COMException ex)             //when (ex.Match(HResult.TYPE_E_ELEMENTNOTFOUND))
            {
                return(null);
            }
            var wrapper = wrappers.GetOrAdd(desktop.GetID(), _ => new VirtualDesktop(desktop));

            return(wrapper);
        }
        /// <summary>
        /// Returns the virtual desktop that the specified window is located.
        /// </summary>
        public static VirtualDesktop FromHwnd(IntPtr hwnd)
        {
            VirtualDesktopHelper.ThrowIfNotSupported();

            if (hwnd == IntPtr.Zero)
            {
                return(null);
            }

            IVirtualDesktop desktop;

            try
            {
                var desktopId = ComManager.GetWindowDesktopId(hwnd);
                desktop = ComInternal.FindDesktop(desktopId);
            }
            catch (COMException ex)             //when (ex.Match(HResult.REGDB_E_CLASSNOTREG, HResult.TYPE_E_ELEMENTNOTFOUND))
            {
                return(null);
            }
            var wrapper = wrappers.GetOrAdd(desktop.GetID(), _ => new VirtualDesktop(desktop));

            return(wrapper);
        }