Desktop Switcher -
var manager = GetVirtualDesktopManagerInternal(); IObjectArray desktops; manager.GetDesktops(out desktops); uint count = desktops.GetCount(); var ids = new List<Guid>(); for (uint i = 0; i < count; i++) desktops.GetAt(i, typeof(IVirtualDesktop).GUID, out IntPtr pDesktop); var desktop = (IVirtualDesktop)Marshal.GetTypedObjectForIUnknown(pDesktop, typeof(IVirtualDesktop)); desktop.GetId(out Guid id); ids.Add(id); Marshal.Release(pDesktop); return ids;
public static void CreateDesktop()
desktopButtons.Clear(); int idx = 1; foreach (var id in desktopIds) Button btn = new Button() Text = $"Desk idx++", Width = 60, Height = 60, BackColor = Color.LightGray, Tag = id ; btn.Click += (s, e) => VirtualDesktopManager.SwitchToDesktop((Guid)((Button)s).Tag); panel.Controls.Add(btn); desktopButtons.Add(btn); desktop switcher
if (m.Msg == WM_HOTKEY) hotkeyAction?.Invoke(); return true; return false;
Button closeBtn = new Button() Text = "X", Width = 60, Height = 60, BackColor = Color.Red ; closeBtn.Click += (s, e) => VirtualDesktopManager.CloseCurrentDesktop(); panel.Controls.Add(closeBtn); var manager = GetVirtualDesktopManagerInternal()
private List<Button> desktopButtons = new List<Button>(); private Timer refreshTimer; public DesktopSwitcherForm()
var desktopIds = VirtualDesktopManager.GetDesktopIds(); FlowLayoutPanel panel = new FlowLayoutPanel() Dock = DockStyle.Fill ; this.Controls.Clear(); this.Controls.Add(panel); uint count = desktops.GetCount()
static void Main()