直接从显示器NO驱动程序读取EDID

时间:2013-01-31 14:14:07

标签: c# windows winpe edid

我得到了这个项目,我试图直接从监视器中提取。 目标是创建一个可以在上运行而无需安装任何驱动程序的应用程序。 我知道可以通过注册数据库或获取信息,但在此项目中这是不可能的,因为如果没有安装驱动程序,它将无法提供正确的信息。我们得到了这个附加的代码,但是我猜它会询问驱动程序的解决方案,因为当我们尝试安装时它不起作用。 这是安装驱动程序时可以显示分辨率的代码..

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool EnumDisplaySettings([MarshalAs(UnmanagedType.LPStr)] string lpszDeviceName, int iModeNum, out Program.DEVMODE lpDevMode);
public static List<Tuple<int, int>> GetScreenResolutions()
{
    List<Tuple<int, int>> list = new List<Tuple<int, int>>();
    try
    {
        int num = 0;
        Program.DEVMODE dEVMODE;
        while (Program.EnumDisplaySettings(null, num++, out dEVMODE))
        {
            Tuple<int, int> item = Tuple.Create<int, int>(dEVMODE.dmPelsWidth, dEVMODE.dmPelsHeight);
            if (!list.Contains(item))
            {
                list.Add(item);
            }
        }
    }
    catch
    {
        Console.WriteLine("Could not get screen resolutions.");
    }
    return list;
}

1 个答案:

答案 0 :(得分:1)

您可能需要P / Invoke到native SetupAPI。但是,没有测试过winpe链接中的代码。