Processing Ajax...

Close Dialog


Close Dialog

Close Dialog

A recent AVG and Avast antivirus update is preventing DisplayFusion 9.9 from launching on some systems.
If you're running into this issue, please update to the latest DisplayFusion 10.0 Beta.

Minimize/Restore All Windows

This script will minimize all open windows when run the first time, and will restore all open windows when run the second time.
Minimum Version
Created By
Thomas Malloch (BFS)
Date Created
Jan 6, 2015
Date Last Modified
Jan 6, 2015

Scripted Function (Macro) Code

using System;
using System.Drawing;
using System.Collections.Generic;
using System.Text;

// 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
	//an enum to set the script state
	private enum ScriptState
		Normal = 0,
		Minimized = 1
	public static void Run(IntPtr windowHandle)
		//constants to set and get the window state property
		const string windowStateProperty = "MinimizeAndRestoreWindows_WindowState";
		//random values to use as property values
		const int normalState = 432985;
		const int maximizedState = 347561;
		//if the script is in it's minimized state, restore the saved window positions
			//loop over every window
			foreach(IntPtr window in BFS.Window.GetAllWindowHandles())
				//check for a saved property
				IntPtr windowState = BFS.Window.GetWindowProperty(window, windowStateProperty);
				//if we couldnt find a property, continue to the next window
				if(windowState == IntPtr.Zero)
				//if the window was in a normal state, restore it
				if(windowState.ToInt64() == normalState)
				//if the window was in a maximized state, maximize it
				if(windowState.ToInt64() == maximizedState)
				//remove the property from the window
				BFS.Window.RemoveWindowProperty(window, windowStateProperty);
			//reset the script state
			//exit the script
		//if we got to this point we should save all of the windows, then minimize them
		//loop through all of the visiable windows, save their state, then minimize then
		foreach(IntPtr window in BFS.Window.GetVisibleWindowHandles())
				BFS.Window.SetWindowProperty(window, windowStateProperty, new IntPtr(maximizedState));
				BFS.Window.SetWindowProperty(window, windowStateProperty, new IntPtr(normalState));
		//set the script state to minimized
	//this function quickly checks to see whether we need to restore previously minimized windows
	private static bool IsScriptInMinimizeState()
		//read the setting value
		string state = BFS.ScriptSettings.ReadValue("Minimize and Restore Windows State");
		//return the saved state. if no state saved, return false
		return (state.Length != 0) && (state.Equals("minimized"));
	//this function saves the script state
	private static void SetScriptState(ScriptState state)
		//save the state
		BFS.ScriptSettings.WriteValue("Minimize and Restore Windows State", (state == ScriptState.Normal) ? "normal" : "minimized");