多显示器利用EnumDisplayMonitors、EnumDisplaySettings函数获取主屏幕、扩展屏幕的分辨率、刷新率等信息

文章介绍了如何通过aardio编程语言,利用EnumDisplayMonitors、EnumDisplayDevices和EnumDisplaySettings等函数来获取当前显示器的刷新率、分辨率、位深度等硬件信息。代码示例展示了如何遍历显示器并打印相关信息,但显示器的品牌和名称需要解析注册表中的EDID来获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天在群里看到群友在问:如何获取当前显示器的刷新率?

我记得aardio中有关于获取硬件信息的范例,研究了一下,发现主要是利用了EnumDisplayMonitors、EnumDisplayDevices、EnumDisplaySettings等几个关键函数。

于是整理了一下,写了如下aardio代码:

import console;
import sys.monitor;

var count = 0;
for( hMonitor,monitorInfo in sys.monitor.eachInfo() ){ //枚举显示器
	if(monitorInfo){		
		var idx = -1/*_ENUM_CURRENT_SETTINGS*/; //检索显示设备的当前设置
		var devMode = sys.monitor.DEVMODE_DISPLAY_DEVICE();
		var flags = 0x2/*_EDS_RAWMODE*/;
		::User32.EnumDisplaySettingsExW(monitorInfo.deviceName, idx, devMode, flags);
		
		count++;
		console.log("【第 " + count + " 台显示器】");
		console.log("名    称 ", monitorInfo.deviceName);
		console.log("主显示器", (monitorInfo.flags == 1) ? "是" : "否");
		console.log("分 辨 率", devMode.pelsWidth + " x " + devMode.pelsHeight);
		console.log("刷 新 率", devMode.displayFrequency);
		console.log("位 深 度", devMode.bitsPerPel);
		console.log("屏幕方向", (devMode.pelsWidth > devMode.pelsHeight) ? "横向" : "纵向");
		console.log("显示方向", devMode.displayOrientation*90 + " 度");
		console.log(string.format('屏幕坐标\t(%d,%d)-(%d,%d)', monitorInfo.rcMonitor.left, monitorInfo.rcMonitor.top, monitorInfo.rcMonitor.right, monitorInfo.rcMonitor.bottom));
		console.log(string.format('工 作 区\t(%d,%d)-(%d,%d)', monitorInfo.rcWork.left, monitorInfo.rcWork.top, monitorInfo.rcWork.right, monitorInfo.rcWork.bottom));

		import gdi;
		console.log(" DPI缩放", (gdi.getDpiScale()));
		console.log();
	}
}

console.pause(true);

获取结果如下:

 美中不足的是,实际的显示器品牌和名称不能获取到,网上查了资料得靠解析注册表中的EDID(Extend Display Identification Data扩展显示器识别数据),有空再去深入研究一下。

PS: MSDN关于devMode的详细资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值