private static void GoToDesktop(int n) { IObjectArray objectArray; _manager.GetDesktops(out objectArray); if (objectArray == null) { return; } int count; objectArray.GetCount(out count); if (count == 0) { return; } object desktop; objectArray.GetAt(n, ref Guids.IVirtualDesktop, out desktop); if (desktop == null) { return; } _manager.SwitchDesktop((IVirtualDesktop)desktop); }
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 IVirtualDesktop GetDesktop(int index) { // get desktop with index int count = VirtualDesktopManagerInternal.GetCount(); if (index < 0 || index >= count) { throw new ArgumentOutOfRangeException("index"); } IObjectArray desktops; VirtualDesktopManagerInternal.GetDesktops(out desktops); object objdesktop; desktops.GetAt(index, typeof(IVirtualDesktop).GUID, out objdesktop); Marshal.ReleaseComObject(desktops); return((IVirtualDesktop)objdesktop); }
private static void UnsafeSetWallpaper(string imagePath) { Guid currentDesktopId = manager.GetCurrentDesktop(IntPtr.Zero).GetId(); IObjectArray objectArray = manager.GetDesktops(IntPtr.Zero); for (uint i = 0u; i < objectArray.GetCount(); i++) { objectArray.GetAt(i, typeof(IVirtualDesktop).GUID, out object virtualDesktop); if ((virtualDesktop as IVirtualDesktop).GetId() != currentDesktopId) { manager.SetWallpaperPath((IVirtualDesktop)virtualDesktop, imagePath); } } }
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); }