예제 #1
0
        /// <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);
        }
예제 #3
0
        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);
        }