/// <summary> /// get desktop with index /// </summary> /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is out of range.</exception> internal static IVirtualDesktop GetDesktop(int index) { int count = VirtualDesktopManagerInternal.GetCount(); if (index < 0 || index >= count) { throw new ArgumentOutOfRangeException("index"); } VirtualDesktopManagerInternal.GetDesktops(out var desktops); desktops.GetAt(index, typeof(IVirtualDesktop).GUID, out object objdesktop); Marshal.ReleaseComObject(desktops); return((IVirtualDesktop)objdesktop); }
public IEnumerable <Guid> LoadDesktopUuidList() { var uuids = new List <Guid>(); try { var numberOfDesktops = _managerInternal.GetCount(); IObjectArray desktops; _managerInternal.GetDesktops(out desktops); for (int i = 0; i < numberOfDesktops; i++) { object desktopResult; desktops.GetAt(i, typeof(uIVirtualDesktop).GUID, out desktopResult); uuids.Add(((uIVirtualDesktop)desktopResult).GetId()); } } catch (Exception ex) { Debug.WriteLine(ex); } return(uuids); }
internal static int GetDesktopIndex(IVirtualDesktop desktop) { int index = -1; Guid IdSearch = desktop.GetId(); IObjectArray desktops; VirtualDesktopManagerInternal.GetDesktops(out desktops); object objdesktop; for (int i = 0; i < VirtualDesktopManagerInternal.GetCount(); i++) { desktops.GetAt(i, typeof(IVirtualDesktop).GUID, out objdesktop); if (IdSearch.CompareTo(((IVirtualDesktop)objdesktop).GetId()) == 0) { index = i; break; } } Marshal.ReleaseComObject(desktops); return(index); }