Eu percebo que este é provavelmente um problema muito obscuro, mas hey é a internet.
Eu tenho um monitor de retrato de 24 ", e eu queria um ajuste vertical. Eu encontrei um script online, mas para a maioria dos tipos de janelas, definir seu tamanho para as dimensões exatas da resolução do monitor fez com que eles fossem um pouco pequenos. ocorre com o Chrome, Edge e até mesmo o Notepad.No entanto, a janela Telegram se comporta como desejado.
A depuração do script AHK mostra que quando Edge é maximizado em um monitor de 1200x1920, o tamanho é na verdade 1216x1896 (vertical é menor para o menu Iniciar, mas ainda é mais alto do que deveria ser).
Eu verifiquei duas vezes as configurações de ajuste de escala do Windows e ele está definido como 100%.
Alguém sabe o que está acontecendo aqui?
No momento, tive que contornar isso fazendo várias inspeções e atribuindo os diferentes métodos a diferentes teclas de atalho.
; dir 0 = top part
; dir 1 = bottom part
; method 0 = funky
; method 1 = exact
ResizeWin(dir = 1, method = 0)
{
WinGet activeWin, ID, A
activeMon := GetMonitorIndexFromWindow(activeWin)
SysGet, MonitorWorkArea, MonitorWorkArea, %activeMon%
if (method == 0) {
WinMaximize, A
WinGetPos, CurWinX, CurWinY, CurWinWidth, CurWinHeight, A
newWidth := CurWinWidth
newHeight := CurWinHeight/2
newLeft := CurWinX
if (dir == 1)
newTop := MonitorWorkAreaTop + newHeight + (CurWinY - MonitorWorkAreaTop)
else
newTop := MonitorWorkAreaTop
} else {
newWidth := MonitorWorkAreaRight - MonitorWorkAreaLeft
newHeight := (MonitorWorkAreaBottom - MonitorWorkAreaTop)/2
newLeft := MonitorWorkAreaLeft
if (dir == 1)
newTop := MonitorWorkAreaBottom - newHeight
else
newTop := MonitorWorkAreaTop
}
WinRestore,A
WinMove,A,,%newLeft%,%newTop%,%newWidth%,%newHeight%
}
; From http://www.autohotkey.com/board/topic/69464-how-to-determine-a-window-is-in-which-monitor/
GetMonitorIndexFromWindow(windowHandle)
{
; Starts with 1.
monitorIndex := 1
VarSetCapacity(monitorInfo, 40)
NumPut(40, monitorInfo)
if (monitorHandle := DllCall("MonitorFromWindow", "uint", windowHandle, "uint", 0x2))
&& DllCall("GetMonitorInfo", "uint", monitorHandle, "uint", &monitorInfo)
{
monitorLeft := NumGet(monitorInfo, 4, "Int")
monitorTop := NumGet(monitorInfo, 8, "Int")
monitorRight := NumGet(monitorInfo, 12, "Int")
monitorBottom := NumGet(monitorInfo, 16, "Int")
workLeft := NumGet(monitorInfo, 20, "Int")
workTop := NumGet(monitorInfo, 24, "Int")
workRight := NumGet(monitorInfo, 28, "Int")
workBottom := NumGet(monitorInfo, 32, "Int")
isPrimary := NumGet(monitorInfo, 36, "Int") & 1
SysGet, monitorCount, MonitorCount
Loop, %monitorCount%
{
SysGet, tempMon, Monitor, %A_Index%
; Compare location to determine the monitor index.
if ((monitorLeft = tempMonLeft) and (monitorTop = tempMonTop)
and (monitorRight = tempMonRight) and (monitorBottom = tempMonBottom))
{
monitorIndex := A_Index
break
}
}
}
return %monitorIndex%
}
^#Up::ResizeWin(0)
^#Down::ResizeWin(1)
+^#Up::ResizeWin(0, 1)
+^#Down::ResizeWin(1, 1)