Const LEFT_MONITOR_ID = 1
Const RIGHT_MONITOR_ID = 2

REG_KEY = "HKEY_CURRENT_USER\Software\Realtime Soft\" & WScript.ScriptName
Const SHOWSTATE_NORMAL = 2
Const SHOWSTATE_MAXIMIZED = 3
Const SHOWSTATE_MAXIMIZED_DESKTOP = 4
Set wnd = CreateObject("UltraMon.Window")
If wnd.GetForegroundWindow() = True Then
	Set sys = CreateObject("UltraMon.System")
	Set sh = CreateObject("WScript.Shell")
	
	'calculate position/size for a window stretched across left and right monitor
	Set mon = sys.Monitors(LEFT_MONITOR_ID - 1)
	posLeft = mon.WorkLeft
	posTop = mon.WorkTop
	Set mon = sys.Monitors(RIGHT_MONITOR_ID - 1)
	posRight = mon.WorkLeft + mon.WorkWidth
	posBottom = mon.WorkTop + mon.WorkHeight
	szWidth = posRight - posLeft
	szHeight = posBottom - posTop
	
	'check if the window is maximized across the two monitors, or if it isn't
	If (wnd.ShowState = SHOWSTATE_NORMAL Or wnd.ShowState = SHOWSTATE_MAXIMIZED_DESKTOP) And wnd.Left = posLeft And wnd.Top = posTop And wnd.Width = szWidth And wnd.Height = szHeight Then
		'restore window to saved position and size
		strValName = REG_KEY & "\" & Hex(wnd.HWnd)
		strVal = sh.RegRead(strValName)
		vals = Split(strval, ",")
		If vals(0) = "m" Then
			wnd.ShowState = SHOWSTATE_MAXIMIZED
			wnd.Monitor = CLng(vals(1))
		Else
			wnd.ShowState = SHOWSTATE_NORMAL
			wnd.Left = CLng(vals(1))
			wnd.Top = CLng(vals(2))
			wnd.Width = CLng(vals(3))
			wnd.Height = CLng(vals(4))
		End If
		
		sh.RegDelete strValName
	Else
		'save current position, size and showstate of the window
		strVal = ""
		If wnd.ShowState = SHOWSTATE_MAXIMIZED Then
			strVal = "m," & wnd.Monitor
		Else
			strVal = "n," & wnd.Left & "," & wnd.Top & "," & wnd.Width & "," & wnd.Height
		End If
		sh.RegWrite REG_KEY & "\" & Hex(wnd.HWnd), strVal
		
		'maximize window across two monitors
		wnd.ShowState = SHOWSTATE_NORMAL
		wnd.Left = posLeft
		wnd.Top = posTop
		wnd.Width = szWidth
		wnd.Height = szHeight
	End If
	
	wnd.ApplyChanges 0
End If
