0
我得到了這個c#項目,我試圖直接從顯示器中提取edid。 目標是在沒有安裝任何驅動程序的情況下創建可在winpe上運行的應用程序。 我知道有可能通過註冊數據庫或wmi獲取信息,但這在此項目中不可行,因爲它不會在未安裝驅動程序的情況下提供正確的信息。我們得到了這個附加的代碼,但我想它會向驅動程序詢問這些分辨率,因爲當我們嘗試安裝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;
}
據我可以看到你的例子使用註冊表來讀取EDID,我已經試過沒有成功。 –
你是否自己搜索註冊表?確切的註冊表路徑在系統之間差別很大,並且SetupAPI是正確的檢索方式。 –
我確實使用了SetupAPI來查找註冊表路徑,但是在處理WinPE時,您無法從註冊表獲得任何有用的信息,因爲驅動程序不提供任何信息。 –