我创建了一个脚本,可以自动设置某些应用的窗口大小。我把它放在启动中,这样它就可以独立工作了。我需要这个,因为我有一台屏幕分辨率为 2560x1600 的笔记本电脑,我用它来工作。但是当我在家时,我会把它连接到我的全高清显示器上。问题是,有些应用会因为不同的屏幕分辨率而改变它们的大小,而且总是手动调整它们的大小非常烦人。所以我这样做了:
#Persistent
GroupAdd, ResizedWin, ahk_exe telegram.EXE
GroupAdd, ResizedWin, ahk_exe Discord.EXE
GroupAdd, ResizedWin, ahk_exe WhatsApp.EXE
GroupAdd, ResizedWin, ahk_exe Notepad.EXE
Loop
{
WinWait ahk_group ResizedWin
WinMove, , , , , 1417, 915
WinWaitClose
}
对我来说,这是适合这些应用的完美尺寸。但目前的问题是,它非常适合 WQHD 分辨率。在 FHD 上,它显然非常大。
我的问题是,有没有什么方法可以校正窗口大小,使其在 WQHD 和 FHD 显示器上看起来一样?这可能很重要,但当我使用 FHD 显示器时,笔记本电脑是关闭的,因此 WQHD 显示器处于非活动状态。反之亦然,当我使用 WQHD 显示器时,FHD 显示器甚至没有连接。
我已经发现温莫夫AHK 的文档如下:
CenterWindow(WinTitle)
{
WinGetPos,,, Width, Height, %WinTitle%
WinMove, %WinTitle%,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)
}
你可以看到一个有趣的(A_ScreenWidth/2)-(宽度/2)和(A_ScreenHeight/2)-(高度/2)用于将窗口居中。所以这在某种程度上是可行的,但我不确定它是否适用于窗口的宽度和高度。更重要的是,我不知道如何计算它,比如我应该将屏幕分辨率除以多少。如果在 2560x1600 上是 1417x915,那么在 1920x1080 上会是多少。
所以这只是我的假设。也许还有其他方法?
答案1
首先假设您缩放分辨率与 DPI 无关,因此我们从这里开始。但是,如果您的 DPI 不同(不同屏幕),您可能需要考虑到这一点:请参阅A_ScreenDPI
接下来,看起来您只是将窗口缩放到可用分辨率的一定百分比,即:
- 1417/2560=~55%
- 915/1600=~57%
因此,例如要得到 1417,当A_ScreenWidth
为 2560 时,以下各项在评估时都大致等效:
- 1417
- 1417/2560*A_屏幕宽度
- .55*A_屏幕宽度
所以不要...
WinMove, , , , , 1417, 915
...使用上面的其中一个公式,让新窗口大小成为屏幕分辨率的函数:
WinMove, , , , , .55 * A_ScreenWidth, .57 * A_ScreenHeight
上述语句将窗口大小调整为屏幕宽度的 55% 和屏幕高度的 57%。
如果需要考虑 DPI,那么这是另一个缩放变量,默认值通常为 96。如果您只是将窗口缩放为屏幕整体尺寸的百分比,则可能不需要使用它,并且如果您的屏幕 DPI 是默认值 96,则下面这个等式中的新项将计算为“1”,有效结果将与使用上述没有 DPI 项的代码相同。
WinMove, , , , , .55 * A_ScreenWidth * A_ScreenDPI/96, .57 * A_ScreenHeight * A_ScreenDPI/96