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(); 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;
// Simulate Ctrl+Win+F4 InputSimulator.SendKeyDown(Keys.LWin); InputSimulator.SendKeyDown(Keys.Control); InputSimulator.SendKeyPress(Keys.F4); InputSimulator.SendKeyUp(Keys.Control); InputSimulator.SendKeyUp(Keys.LWin); desktop switcher
public bool PreFilterMessage(ref Message m)
public class GlobalHotkey : IMessageFilter Button closeBtn = new Button() Text = "X",
[DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);
[ComImport] [Guid("ff72ffdd-be7e-43fc-9c03-ad81681e88e4")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IVirtualDesktop Width = 60
private List<Button> desktopButtons = new List<Button>(); private Timer refreshTimer; public DesktopSwitcherForm()