0

をモニターから直接抽出しようとしているこのプロジェクトを取得しました。目標は、ドライバーをインストールせずにを使用して情報を取得できることはわかっていますが、ドライバーがインストールされていないと正しい情報が提供されないため、このプロジェクトではこれは不可能です。インストールを試行すると動作しないため、ドライバーに解決策を尋ねていると思います。ドライバーがインストールされている場合、解像度を表示できるコードは次のとおりです。

[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;
}
4

1 に答える 1

1

ネイティブの SetupAPIに対して P/Invoke が必要になる場合があります。ただし、winpe のリンクのコードはテストしていません。

于 2013-02-01T08:49:16.830 に答える