AutoHotkey'i kullanmanızı öneririm .
Tam olarak sorduğunuz şeyi yapan örnek bir komut dosyası başka bir soruya yanıt olarak zaten sağlanmıştır .
İşte betiğin kodu:
#!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
}
Pencerenin alt kısmı görev çubuğunun altına gitmeyecek şekilde hafif bir ayar yaptım ve windowWidth
0.7'den 0.5'e değiştirdim.
Düzenleme : artık birden çok monitörle çalışıyor ve çalışma alanını üst ve alt değerler için kullanıyor.
Bir yan notta, WinSplit Devrimi durduruldu ve yerine MaxTo adlı ücretli bir uygulama eklendi.
AutoHotkey, çok güçlü olmanın ve çok daha fazla kullanım senaryosunun yanı sıra ücretsiz ve açık kaynaklıdır.