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 %d\n", g_DPIScaleX, g_DPIScaleY);
getchar();
}
答案 0 :(得分:1)
也许这不是你想要的,但我总是检查DPI在注册表上的缩放:
RegRead("HKCU:\Control Panel\Desktop", "LogPixels")
编辑:您也可以使用RegWrite
和Relog / Reboot激活密钥以激活它。