public static bool IsApplicationPinned(IntPtr hWnd)
 { // Returns true if application for window <hWnd> is pinned to all desktops
     if (hWnd == IntPtr.Zero)
     {
         throw new ArgumentNullException();
     }
     return(DesktopManager.VirtualDesktopPinnedApps.IsAppIdPinned(DesktopManager.GetAppId(hWnd)));
 }
        public static void PinApplication(IntPtr hWnd)
        { // pin application for window <hWnd> to all desktops
            if (hWnd == IntPtr.Zero)
            {
                throw new ArgumentNullException();
            }
            string appId = DesktopManager.GetAppId(hWnd);

            if (!DesktopManager.VirtualDesktopPinnedApps.IsAppIdPinned(appId))
            { // pin only if not already pinned
                DesktopManager.VirtualDesktopPinnedApps.PinAppID(appId);
            }
        }
        public static void UnpinApplication(IntPtr hWnd)
        { // unpin application for window <hWnd> from all desktops
            if (hWnd == IntPtr.Zero)
            {
                throw new ArgumentNullException();
            }
            var    view  = hWnd.GetApplicationView();
            string appId = DesktopManager.GetAppId(hWnd);

            if (DesktopManager.VirtualDesktopPinnedApps.IsAppIdPinned(appId))
            { // unpin only if already pinned
                DesktopManager.VirtualDesktopPinnedApps.UnpinAppID(appId);
            }
        }
        public void Remove(Desktop fallback = null)
        { // Destroy desktop and switch to <fallback>
            IVirtualDesktop fallbackdesktop;

            if (fallback == null)
            { // if no fallback is given use desktop to the left except for desktop 0.
                Desktop dtToCheck = new Desktop(DesktopManager.GetDesktop(0));
                if (this.Equals(dtToCheck))
                {                                                                                                 // desktop 0: set fallback to second desktop (= "right" desktop)
                    DesktopManager.VirtualDesktopManagerInternal.GetAdjacentDesktop(ivd, 4, out fallbackdesktop); // 4 = RightDirection
                }
                else
                {                                                                                                 // set fallback to "left" desktop
                    DesktopManager.VirtualDesktopManagerInternal.GetAdjacentDesktop(ivd, 3, out fallbackdesktop); // 3 = LeftDirection
                }
            }
            else
            {
                // set fallback desktop
                fallbackdesktop = fallback.ivd;
            }

            DesktopManager.VirtualDesktopManagerInternal.RemoveDesktop(ivd, fallbackdesktop);
        }
 public static Desktop FromIndex(int index)
 { // Create desktop object from index 0..Count-1
     return(new Desktop(DesktopManager.GetDesktop(index)));
 }
 public static int FromDesktop(Desktop desktop)
 { // Returns index of desktop object or -1 if not found
     return(DesktopManager.GetDesktopIndex(desktop.ivd));
 }