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 names. 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 //"--- Abbrechen ---" is german for "cancel". Used to cancel the action, see below "MenuItem_Click" string[, ,] MenuEntries = { // {{ "Background-Color", "Foreground-Color", "Function-Name" }} {{ "Pink", "Maroon", "--- Abbrechen ---" }}, {{ "Khaki", "Black", "Fenster auf dem Bildschirm zentrieren" }}, {{ "Khaki", "Black", "Fenster auf Titelleiste reduzieren" }}, {{ "Khaki", "Black", "Fenster auf Titelleiste reduzieren und nach oben" }}, {{ "PaleGreen", "Black", "Fenster nach links" }}, {{ "PaleGreen", "Black", "Fenster nach oben" }}, {{ "PaleGreen", "Black", "Fenster nach rechts" }}, {{ "PaleGreen", "Black", "Fenster nach unten" }}, {{ "Aquamarine", "Black", "Fenster nach oben-links" }}, {{ "Aquamarine", "Black", "Fenster nach oben-rechts" }}, {{ "Aquamarine", "Black", "Fenster nach unten-links" }}, {{ "Aquamarine", "Black", "Fenster nach unten-rechts" }}, {{ "Pink", "Maroon", "--- Abbrechen ---" }} }; //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 for ( int i = 0; i < ( MenuEntries.Length / MenuEntries.Rank ); i++ ) { menu.Items.Add(MenuEntries[i, 0, 2]); menu.Items[menu.Items.Count - 1].Click += MenuItem_Click; menu.Items[menu.Items.Count - 1].BackColor = Color.FromName( MenuEntries[i, 0, 0]); menu.Items[menu.Items.Count - 1].ForeColor = Color.FromName( MenuEntries[i, 0, 1]); } //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); //set focus to the menu BFS.Window.Focus(menu.Handle); //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 //"--- Abbrechen ---" (Cancel), change it to what you used in MenuEntries-List private static void MenuItem_Click(object sender, EventArgs e) { ToolStripItem item = sender as ToolStripItem; if (item == null || item.Text == "--- Abbrechen ---") return; BFS.DisplayFusion.RunFunction(item.Text); } }