我正在尝试为我的系统上的监视器获取友好名称.我正在使用C#.
我试过了Screen,只是给了我//./DisplayXX.我也曾尝试既Win32_DesktopMonitor和EnumDisplayDevices,他们都给予我的变化//./DisplayXXOR Generic Monitor,而我知道我的显示器名称SyncMaster和SM2333T.
现在,Windows知道这些监视器是什么,使用正确的名称在" 设备和打印机"窗口中显示它们,并在用于设置位置和分辨率的对话框中显示它们.
我在哪里可以从中获取这些名称?我已经查看了注册表,似乎无法找到它们,所以任何帮助都会很棒.
解决方案:
我遇到的问题是EnumDisplayDevices第二次调用时iDevNum再次调用id,这意味着我试图从错误的位置获取数据,然后将其替换为0,它完美地运行,请参阅下面的代码.
var device = new DISPLAY_DEVICE();
device.cb = Marshal.SizeOf(device);
try
{
for (uint id = 0; EnumDisplayDevices(null, id, ref device, 0); id++)
{
Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, device.DeviceString, device.StateFlags, device.DeviceID, device.DeviceKey));
Console.WriteLine();
device.cb = Marshal.SizeOf(device);
EnumDisplayDevices(device.DeviceName, 0, ref device, 0);
Console.WriteLine(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", id, device.DeviceName, …Run Code Online (Sandbox Code Playgroud) 我正在使用C#/ WPF中的应用程序,并希望获得所有连接的显示器监视器的列表.我使用了Screen类并成功获得了列表,但现在列表中的每个监视器名称都是".\ Display1\XXXXXXXX"等.这是不可读的.但是,My Nividia控制面板将它们列为专有名称.所以任何人都可以告诉我如何获得这些名称或api参考.
注意:=我已经尝试过返回名称的EnumDisplayDevices,但它们应该是什么?这让事情更加混乱?
我尝试了WMI,它允许我访问更多信息,但是,名称仍然是"默认监视器1""默认监视器2",而没有关于制造商的信息,现在我想我们可以通过使用正常蜜蜂