Local $hDC = DllCall("user32.dll", "long", "GetDC", "long", $hWnd)
Local $aRet = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $hDC[0], "long", 88)
MsgBox(0, "Result", $aRet[0])
Local $aRet = DllCall("gdi32.dll", "long", "GetDeviceCaps", "long", $hDC[0], "long", 90)
MsgBox(0, "Result", $aRet[0])
DllCall("user32.dll", "long", "ReleaseDC", "long", $hWnd, "long", $hDC)
我写了一些像上面的代码,出于某种原因,我想获得显示缩放设置。但无论我配置了什么显示设置,我总是得到相同的值"96"。
在C中使用相同的函数调用,我可以得到正确的值,如96,144…等。有人知道如何使GetDeviceCaps函数在AutoIt脚本工作吗?谢谢!
下面是C代码:int main(int argc, char *argv[])
{
HDC hdc = GetDC(NULL);
int g_DPIScaleX = GetDeviceCaps(hdc, LOGPIXELSX);// / 96.0f;
int g_DPIScaleY = GetDeviceCaps(hdc, LOGPIXELSY);// / 96.0f;
ReleaseDC(NULL, hdc);
printf("%d %dn", g_DPIScaleX, g_DPIScaleY);
getchar();
}
也许这不是你想要的,但我总是检查DPI在注册表上的缩放:
RegRead("HKCU:Control PanelDesktop", "LogPixels")
编辑:您也可以更改密钥与RegWrite
和Relog/Reboot后激活它。