Ich würde vorschlagen, AutoHotkey zu verwenden .
Ein Beispielskript, das genau das tut, was Sie gefragt haben, wurde bereits in einer Antwort auf eine andere Frage bereitgestellt .
Hier ist der Code des Skripts:
#!Up::CenterActiveWindow() ; if win+alt+↑ is pressed
CenterActiveWindow()
{
; Get the window handle from de active window.
winHandle := WinExist("A")
VarSetCapacity(monitorInfo, 40)
NumPut(40, monitorInfo)
; Get the current monitor from the active window handle.
monitorHandle := DllCall("MonitorFromWindow", "uint", winHandle, "uint", 0x2)
DllCall("GetMonitorInfo", "uint", monitorHandle, "uint", &monitorInfo)
; Get WorkArea bounding coordinates of the current monitor.
A_Left := NumGet(monitorInfo, 20, "Int")
A_Top := NumGet(monitorInfo, 24, "Int")
A_Right := NumGet(monitorInfo, 28, "Int")
A_Bottom := NumGet(monitorInfo, 32, "Int")
; Calculate window coordinates.
winW := (A_Right - A_Left) * 0.5 ; Change the factor here to your desired width.
winH := A_Bottom
winX := A_Left + (winW / 2)
winY := A_Top
WinMove, A,, winX, winY, winW, winH
}
Ich habe eine geringfügige Änderung vorgenommen, damit der untere Rand des Fensters nicht unter die Taskleiste fällt, und habe den Wert windowWidth
von 0,7 auf 0,5 geändert .
Bearbeiten : Arbeitet jetzt mit mehreren Monitoren und verwendet den Arbeitsbereich für obere und untere Werte.
Nebenbei bemerkt wurde WinSplit Revolution eingestellt und durch eine kostenpflichtige App namens MaxTo ersetzt.
AutoHotkey ist nicht nur sehr leistungsfähig und deckt viel mehr Anwendungsfälle ab, sondern ist auch kostenlos und Open Source.