private static void RegisterListener()
        {
            var service = VirtualDesktopInteropHelper.GetVirtualDesktopNotificationService();

            listener = new VirtualDesktopNotificationListener();
            dwCookie = service.Register(listener);
        }
        private static void UnregisterListener()
        {
            if (dwCookie == null)
            {
                return;
            }

            var service = VirtualDesktopInteropHelper.GetVirtualDesktopNotificationService();

            service.Unregister(dwCookie.Value);
        }
        static VirtualDesktop()
        {
            if (!IsSupported)
            {
                return;
            }

            try
            {
                ComManager  = VirtualDesktopInteropHelper.GetVirtualDesktopManager();
                ComInternal = VirtualDesktopInteropHelper.GetVirtualDesktopManagerInternal();
            }
            catch (Exception ex)
            {
                InitializationException = ex;
                isSupportedInternal     = false;
            }

            RegisterListener();
            AppDomain.CurrentDomain.ProcessExit += (sender, args) => UnregisterListener();
        }