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

C#如何正确读取并格式化输出所有已连接显示器的型号名称

问题原因

你之前的修改把逗号拼接逻辑放在了单字符遍历的内层循环中,导致每个ASCII字符转换后都被追加了逗号,才会出现单字符分隔的错误输出。你需要先把单个显示器的完整名称拼装完成,再对不同显示器的名称做逗号分隔处理。

修正后代码

// 先声明列表存储所有显示器的名称
List<string> monitorList = new List<string>();
var searcher = new ManagementObjectSearcher(@"root\wmi", "SELECT * FROM WmiMonitorID");
foreach (ManagementObject ufn in searcher.Get())
{
    string monitorModel = string.Empty;
    if (ufn["UserFriendlyName"] == null)
    {
        monitorModel = "No description";
    }
    else
    {
        ushort[] ufnArray = (ushort[])ufn["UserFriendlyName"];
        // 优先拼装完成单个显示器的完整名称
        foreach (ushort ufnValue in ufnArray)
        {
            var ufnASCIIBytes = new byte[] { (byte)ufnValue };
            monitorModel += Encoding.ASCII.GetString(ufnASCIIBytes);
        }
        // 清理WMI返回值默认带的末尾空字符
        monitorModel = monitorModel.Trim('\0');
    }
    // 将单个显示器名称存入集合
    monitorList.Add(monitorModel);
}
// 用Join方法统一拼接分隔符,自动避免末尾多余逗号问题
string finalOutput = string.Join(", ", monitorList);

最终输出的finalOutput就是你期望的DELL P2419H, DELL P2418D格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:06:03