using System; using System.Drawing; using System.Windows.Forms; // The 'windowHandle' parameter will contain the window handle for the: // - Active window when run by hotkey // - Window Location target when run by a Window Location rule // - TitleBar Button owner when run by a TitleBar Button // - Jump List owner when run from a Taskbar Jump List // - Currently focused window if none of these match public static class DisplayFusionFunction { public static void Run(IntPtr windowHandle) { //these are all of the functions from the "Window Management" functions list //the function are just called by their namess. to find their names, you can copy them //from the context menus, or type "BFS.DisplayFusion.RunFunction(" and a window will come up //with all of the available functions string[] functions = { "Save Window Positions", "Restore Window Positions From Last Save", "Move Window to Center of Monitor", "Toggle Window Always on Top", "Send Window to Back", "Toggle Window Transparency", "Move All Windows to Current Monitor", }; //create a new ContextMenuStrip to show the items using (ContextMenuStrip menu = new ContextMenuStrip()) { //dont show the padding on the left of the menu menu.ShowCheckMargin = false; menu.ShowImageMargin = false; //add items to the menu, and use our custom function when a user clicks on the items foreach (string function in functions) { menu.Items.Add(function); menu.Items[menu.Items.Count - 1].Click += MenuItem_Click; } //if the menu will show on the screen, show it. otherwise, show it above the mouse if (BFS.Monitor.GetMonitorBoundsByMouseCursor().Contains(new Point(BFS.Input.GetMousePositionX(), BFS.Input.GetMousePositionY() + menu.Height))) menu.Show(BFS.Input.GetMousePositionX(), BFS.Input.GetMousePositionY()); else menu.Show(new Point(BFS.Input.GetMousePositionX(), BFS.Input.GetMousePositionY()), ToolStripDropDownDirection.AboveRight); //wait for the menu to close while (menu.Visible) Application.DoEvents(); } } //this function will get the text of the item and try to run it as a DisplayFusion function private static void MenuItem_Click(object sender, EventArgs e) { ToolStripItem item = sender as ToolStripItem; if (item == null) return; BFS.DisplayFusion.RunFunction(item.Text); } }