我得到了这个c#项目,我试图直接从监视器中提取edid 。目标是制作一个无需安装任何驱动程序即可在winpe上运行的应用程序。我知道可以通过注册数据库或wmi获取信息,但这在这个项目中是不可能的,因为如果没有安装驱动程序,它将无法提供正确的信息。我们得到了这个可以工作的附加代码,但我想它会询问驱动程序的分辨率,因为当我们尝试安装winpe时它不会工作。这是安装驱动程序时可以显示分辨率的代码..
[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;
}