我正在尝试为我的系统上的监视器获取友好名称.我正在使用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) 我知道Screen类,但是当我尝试使用Screen.AllScreens [0]时,我会得到像.\ Device1这样的东西.相反,我想拥有我的屏幕名称,比如HP 24'.怎么办?谢谢