Windows HDMI 监控

本文介绍了如何在Windows系统中使用WMI查询和EnumDisplayDevices函数来获取显示器的相关信息,包括默认监视器和屏幕品牌等。通过示例代码展示了如何使用ManagementObjectSearcher类查询Win32_DesktopMonitor类来获取显示器类型,并利用EnumDisplayDevices遍历显示设备,获取设备名称和品牌等详情。
摘要由CSDN通过智能技术生成
  string query = "Select MonitorType from Win32_DesktopMonitor";
            Task time = new Task(() =>
            {
                using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
                {
                    var devs = searcher.Get();

                    if (devs != null && devs.Count > 0)
                    {
                        foreach (ManagementObject mo in devs)
                        {
                            ///未插入提示默认监视器
                            ///插入提示屏幕品牌信息
                            if (mo["MonitorType"].ToString().Equals("默认"))
                            {
                                //未插入
                            }
                            else
                            {
                                //插入
                            }
                            // MessageBox.Show(mo["MonitorType"] as string);
                            // Debug.Print(mo["MonitorType"] as string);
                        }
                    }
                    else
                    {
                        //未插入
                    }
                }
                Thread.Sleep(_time);
            });
            time.Start();

EnumDisplayDevices
EnumDisplayDevices功能可让您获取有关系统中显示设备的信息。

BOOL EnumDisplayDevices(
LPCTSTR lpDevice,//设备名称
DWORD iDevNum,//显示设备
PDISPLAY_DEVICE lpDisplayDevice,//设备信息
DWORD dwFlags //保留
);
参数
lpDevice
[in]指向设备名称的指针。如果为NULL,函数将返回基于iDevNum的机器上显示适配器的信息。有关详细信息,请参阅备注。
iDevNum
[in]指定感兴趣的显示设备的索引值。
操作系统用每个显示设备识别索引值。索引值是从0开始的连续整数。例如,如果系统有三个显示设备,则它们由索引值0,1和2指定。

lpDisplayDevice
[out]指向DISPLAY_DEVICE结构的指针,该结构接收由iDevNum指定的显示设备的信息。
在调用EnumDisplayDevices之前,必须将DISPLAY_DEVICE的cb成员初始化为DISPLAY_DEVICE的大小(以字节为单位)。

dwFlags中
此参数当前未使用,应设置为零。
返回值
如果函数成功,返回值不为零。

如果函数失败,返回值为零。如果iDevNum大于最大的设备索引,该函数将失败。

备注
要查询系统中的所有显示设备,请在循环中调用此函数,从iDevNum设置为0开始,并增加iDevNum直到函数失败。要选择桌面中的所有显示设备,请仅使用DISPLAY_DEVICE结构中具有DISPLAY_DEVICE_ATTACHED_TO_DESKTOP标志的显示设备。

要获取显示适配器的信息,请将lpDevice的EnumDisplayDevices设置为NULL。例如,DISPLAY_DEVICE.DeviceString包含适配器名称。

要获取显示监视器上的信息,请首先将lpDevice的EnumDisplayDevices设置为NULL。然后调用EnumDisplayDevices,将lpDevice设置为DISPLAY_DEVICE.DeviceName,从第一次调用EnumDisplayDevices,并将iDevNum设置为零。那么DISPLAY_DEVICE.DeviceString是监视器名称。

如果一个适配器有多个显示器,要获取所有这些信息,您必须重复调用EnumDisplayDevices。每次调用该函数时,将lpDevice设置为适配器名称并增加iDevNum。请注意,每个调用监视器信息,DISPLAY_DEVICE.DeviceName会更改,因此必须保存适配器名称。当适配器没有更多显示器时,该功能将失败。

Windows 98 / Me:EnumDisplayDevicesW由Microsoft Layer for Unicode支持。要使用此功能,必须向应用程序添加某些文件,如Windows 95/98 / Me系统上的Microsoft Layer for Unicode所述。

要求
Windows NT / 2000 / XP:包含在Windows 2000及更高版本中。
Windows 95/98 / Me:包含在Windows 98及更高版本中。
标题:在Winuser.h中声明 包括Windows.h。
图书馆:使用User32.lib。
Unicode:在Windows 2000 / XP上实现为Unicode和ANSI版本。还支持Microsoft Layer for Unicode。

也可以看看
设备上下文概述,设备上下文功能,ChangeDisplaySettings,ChangeDisplaySettingsEx,CreateDC,DEVMODE,DISPLAY_DEVICE,EnumDisplaySettings

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新标签页

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值