【发布时间】:2019-07-21 13:30:02
【问题描述】:
我想以编程方式查询Windows 显示缩放设置:
在这种情况下,我希望它返回125,因为我将显示器配置为125% 缩放。根据this的文章,可以使用下面的Windows API C++代码:
// Get desktop dc
desktopDc = GetDC(NULL);
// Get native resolution
horizontalDPI = GetDeviceCaps(desktopDc,LOGPIXELSX);
verticalDPI = GetDeviceCaps(desktopDc,LOGPIXELSY);
但是,此代码始终返回 96 和 96 用于水平和垂直 DPI 转换为 100% 缩放(根据提供的表格):
这个输出是错误的,因为我仍然得到与125% 缩放相同的结果。如何做呢?我在Java 中编程,所以我可以使用JNA 执行C++。 Windows API 解决方案是首选,但其他一切,如 .bat 脚本或 registry 查询也可以,只要它对于从 7 到 10 的所有 Windows 版本都是可靠的。
【问题讨论】:
-
请注意,
LOGPIXELSY将始终返回 96 以保证兼容性,除非您将应用标记为 dpi-aware。