edidをモニターから直接抽出しようとしているこのc#プロジェクトを取得しました。目標は、ドライバーをインストールせずに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;
}