/// <summary> /// Creates a virtual desktop. /// </summary> public static VirtualDesktop Create() { VirtualDesktopHelper.ThrowIfNotSupported(); var desktop = ComInternal.CreateDesktopW(); var wrapper = wrappers.GetOrAdd(desktop.GetID(), _ => new VirtualDesktop(desktop)); return(wrapper); }
/// <summary> /// Remove the virtual desktop, specifying a virtual desktop that display after destroyed. /// </summary> public void Remove(VirtualDesktop fallbackDesktop) { if (fallbackDesktop == null) { throw new ArgumentNullException(); } ComInternal.RemoveDesktop(this.ComObject, fallbackDesktop.ComObject); }
internal static IEnumerable <VirtualDesktop> GetDesktopsInternal() { var desktops = ComInternal.GetDesktops(); var count = desktops.GetCount(); for (var i = 0u; i < count; i++) { object ppvObject; desktops.GetAt(i, typeof(IVirtualDesktop).GUID, out ppvObject); var desktop = (IVirtualDesktop)ppvObject; var wrapper = wrappers.GetOrAdd(desktop.GetID(), _ => new VirtualDesktop(desktop)); yield return(wrapper); } }
/// <summary> /// Returns a virtual desktop on the right. /// </summary> public VirtualDesktop GetRight() { IVirtualDesktop desktop; try { desktop = ComInternal.GetAdjacentDesktop(this.ComObject, AdjacentDesktop.RightDirection); } catch (COMException ex) //when (ex.Match(HResult.TYPE_E_OUTOFBOUNDS)) { return(null); } var wrapper = wrappers.GetOrAdd(desktop.GetID(), _ => new VirtualDesktop(desktop)); return(wrapper); }
/// <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); }
/// <summary> /// Display the virtual desktop. /// </summary> public void Switch() { ComInternal.SwitchDesktop(this.ComObject); }