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

如何获取与显示设置中完全一致的显示器ID?

获取与Windows显示设置一致的显示器ID

要拿到和显示设置里完全匹配的显示器ID(比如“显示器1”“显示器2”这类编号),可以通过以下几种可行方法实现:

方法1:使用Display Config API(最可靠)

Windows提供的Display Config系列API可以直接获取系统显示设置里的设备标识,核心步骤如下:

  • 调用DisplayConfigGetDevices枚举所有显示设备路径和模式信息
  • 对每个目标设备,调用DisplayConfigGetDeviceInfo获取DISPLAYCONFIG_TARGET_DEVICE_NAME结构体,其中的outputDeviceName字段就是和显示设置界面完全一致的显示器ID
  • 示例C#代码片段(需补充完整的P/Invoke声明):
using System.Runtime.InteropServices;

public class DisplayConfigHelper
{
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    private static extern int DisplayConfigGetDevices(
        uint flags,
        ref uint numPathArrayElements,
        IntPtr pathArray,
        ref uint numModeInfoArrayElements,
        IntPtr modeInfoArray);

    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    private static extern int DisplayConfigGetDeviceInfo(ref DISPLAYCONFIG_DEVICE_INFO_HEADER requestPacket);

    // 需定义DISPLAYCONFIG_DEVICE_INFO_HEADER、DISPLAYCONFIG_TARGET_DEVICE_NAME等结构体
    // 具体结构可参考微软官方文档
}

方法2:读取系统注册表

显示设置的显示器编号和注册表中的配置项关联,可通过以下路径遍历获取:

  • 打开注册表路径HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration
  • 遍历该路径下的所有子项,每个子项对应一个显示器的配置
  • 查找子项中的DisplayIdentifier键值,其内容就是显示设置里的显示器ID
  • 注意:注册表结构可能随Windows版本略有变化,需要做兼容性判断

方法3:关联EnumDisplayDevices与EDID信息

你之前用NativeMethods拿到的\.\DISPLAYx是系统内部设备路径,可通过EDID信息映射到显示设置的ID:

  • 调用EnumDisplayDevices获取每个显示器的DeviceID
  • 通过SetupDiGetDeviceRegistryProperty读取设备的EDID数据
  • 结合系统显示配置的映射关系,将内部路径关联到显示设置里的用户可见编号

注意:\.\DISPLAYx是系统底层的设备标识,和显示设置里的编号没有直接的数字对应关系,必须通过上述映射方法才能匹配。

内容的提问来源于stack exchange,提问作者Anatoliy Katsimon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:50:15