是否有使用WMI / .Net来获取监视器信息,如制造商,序列号,显示器大小等?
使用脚本也是一个选项,或者我可以直接查询注册表以获取此信息吗?
在这种情况下, SELECT * FROM Win32_DesktopMonitor
并没有真正为我返回任何有用的信息。
答案 0 :(得分:11)
嘿,我使用这个工具进行了很多WMI工作,特别是在原型设计和创建POC时....
此工具非常适合在C#和VB.NET中为任何wmi查询或方法调用创建快速控制台应用程序代码
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_DesktopMonitor");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_DesktopMonitor instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Description: {0}", queryObj["Description"]);
}
}
catch (ManagementException e)
{
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
上面的代码将为您提供显示器的品牌和型号。
答案 1 :(得分:5)
您可能想尝试这个
https://raw.githubusercontent.com/MaxAnderson95/Get-Monitor-Information/master/Get-Monitor.ps1
干杯
答案 2 :(得分:1)
该选择查询应该可以提供您想要的内容。 Here是包含查询详细信息的文档。
然后你可以这样做:
public void GetMonitorDetails()
{
using(ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DesktopMonitor")
{
foreach(ManagementObject currentObj in searcher.Get())
{
String name = currentObj("Name").ToString();
String device_id = currentObj("DeviceID").ToString();
// ...
}
}
}
答案 3 :(得分:0)
This post,结合以下关于WMI管理工具的答案得到了答案。以下是返回显示器分辨率的代码。
try {
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM WmiMonitorBasicDisplayParams");
foreach (ManagementObject queryObj in searcher.Get()) {
Debug.WriteLine("-----------------------------------");
Debug.WriteLine("WmiMonitorBasicDisplayParams instance");
Debug.WriteLine("-----------------------------------");
Debug.WriteLine("Description: {0}", queryObj["SupportedDisplayFeatures"]);
}
} catch (ManagementException e) {
MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
}
在我的情况下,我仍然卡住了,因为它正在返回每个显示器的“缩小”分辨率。其中一个是4K显示器,报告为2560x1440。