; ; MoveToMon ; This version by mmdoogie ; 23 February 2007 ; Inspired By jgpaiva and artis ; ; Moves windows between monitors. ; Autodetects number of monitors. ; Remains neutral to monitor layout. ; Ctrl Alt Numpad+ increments monitor number. ; Ctrl Alt Numpad- decrements monitor number. ; SysGet,MaxMonitor,MonitorCount Menu,Tray,Standard Menu,Tray,Add Menu,Tray,Add,Increment Window's Monitor Number,IncrementWindowMonitor Menu,Tray,Add,Decrement Window's Monitor Number,DecrementWindowMonitor return ^!NumpadAdd:: IncrementWindowMonitor: Gosub,FindCurrentMonitor If (CurrMonitor = 0) return NewMonitor := CurrMonitor + 1 If (NewMonitor <= MaxMonitor) Gosub,MoveCurrentWindow return ^!NumpadSub:: DecrementWindowMonitor: Gosub,FindCurrentMonitor If (CurrMonitor = 0) return NewMonitor := CurrMonitor - 1 If (NewMonitor >= 1) Gosub,MoveCurrentWindow return MoveCurrentWindow: WinGet,WindowState,MinMax,A SysGet,NewMonitor,Monitor,%NewMonitor% NewWinX := WinX - MonitorLeft + NewMonitorLeft NewWinY := WinY - MonitorTop + NewMonitorTop If (WindowState = 1) WinRestore,A WinMove,A,,%NewWinX%,%NewWinY% If (WindowState = 1) WinMaximize,A return FindCurrentMonitor: WinGetPos,WinX,WinY,WinWidth,WinHeight,A MidpointX := WinX + (WinWidth / 2) MidpointY := WinY + (WinWidth / 2) CurrMonitor := 1 Loop %MaxMonitor% { SysGet,Monitor,Monitor,%CurrMonitor% If (MidpointX >= MonitorLeft AND MidpointX <= MonitorRight AND MidpointY >= MonitorTop AND MidpointY <= MonitorBottom) break CurrMonitor := CurrMonitor + 1 } if (CurrMonitor > MaxMonitor) { MsgBox What just happened?? This window isn't on an active monitor?? CurrMonitor := 0 return } return