Je suggère d'utiliser AutoHotkey .
Un exemple de script qui fait exactement ce que vous avez demandé a déjà été fourni dans une réponse à une autre question .
Voici le code du script:
#!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
}
J'ai fait un léger ajustement pour que le bas de la fenêtre ne passe pas sous la barre des tâches, et j'ai changé la valeur windowWidth
de 0,7 à 0,5.
Modifier : fonctionne maintenant avec plusieurs moniteurs et utilise la zone de travail pour les valeurs supérieures et inférieures.
Par ailleurs, WinSplit Revolution a été abandonné et remplacé par une application payante appelée MaxTo.
En plus d'être très puissant et couvrant beaucoup plus de cas d'utilisation, AutoHotkey est également gratuit et open source.