You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在UWP应用中获取主机系统的屏幕分辨率(不受启动显示器影响)

UWP获取所有显示器分辨率的可行方案

你可以通过UWP的DisplayMonitor和DisplayInformationAPI直接枚举所有连接的显示器,无需移动应用就能获取包括主显示器在内的所有屏幕分辨率信息,具体实现如下:

实现步骤

  1. 引入必要的命名空间:
using Windows.Devices.Display;
using Windows.Graphics.Display;
  1. 枚举所有显示器并获取分辨率:
// 异步获取系统中所有已连接的显示器
var allMonitors = await DisplayMonitor.GetAllAsync();

foreach (var monitor in allMonitors)
{
    // 通过显示器ID获取对应的显示信息
    var displayInfo = DisplayInformation.GetForDisplayId(monitor.DisplayId);
    
    // 原生物理分辨率(不受系统缩放影响)
    string nativeRes = $"物理分辨率:{displayInfo.ScreenWidthInRawPixels} × {displayInfo.ScreenHeightInRawPixels}";
    // 当前生效的分辨率(考虑系统缩放比例)
    string effectiveRes = $"有效分辨率(含缩放):{displayInfo.ResolutionScale}";
    
    // 标记是否为主显示器
    string primaryTag = monitor.IsPrimary ? "【主显示器】" : "";
    
    // 处理获取到的信息,比如打印或展示到UI
    Console.WriteLine($"{monitor.DisplayName} {primaryTag}");
    Console.WriteLine(nativeRes);
    Console.WriteLine(effectiveRes);
}

关键细节

  • DisplayMonitor.GetAllAsync():直接获取所有已连接的显示器列表,每个DisplayMonitor实例包含IsPrimary属性,可以直接判断是否是主机的主显示器。
  • DisplayInformation.GetForDisplayId():通过显示器的唯一ID获取对应的分辨率数据,其中ScreenWidthInRawPixels和ScreenHeightInRawPixels是显示器的原生硬件分辨率,不会因为系统缩放或应用窗口大小而改变。
  • 这个方案不需要移动应用窗口,启动时就能一次性获取所有显示器的信息,完全满足你的需求。

内容的提问来源于stack exchange,提问作者Ritesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:35:28