Как перечислить доступные режимы видео с помощью C#?

Ваш код проверяется только в одном направлении (после него следует порядковый номер) Для полной последовательности вы должны проверить в обоих направлениях.

num=[8,9,4,1,2,3]

assert(len(num) > 1)
for i, n in enumerate(num):
    if i != 0:
        if n == num[i-1] + 1:
            print("Con", n)
            continue
    if i != len(num) - 1:
        if n == num[i+1] - 1:
            print("Con", n)

7
задан Shog9 21 June 2009 в 21:59
поделиться

1 ответ

Если вы имеете в виду видео режимы, доступные разрешения, попробуйте вызвать EnumDisplaySettingsEx

подробности можно найти здесь :

http://msdn.microsoft.com/en-us/library/dd162612 (VS.85) .aspx

небольшая программа, в которой перечислены доступные разрешения:

using System;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace ListResolutions
{

    class Program
    {
        [DllImport("user32.dll")]
        public static extern bool EnumDisplaySettings(
              string deviceName, int modeNum, ref DEVMODE devMode);
        const int ENUM_CURRENT_SETTINGS = -1;

        const int ENUM_REGISTRY_SETTINGS = -2;

        [StructLayout(LayoutKind.Sequential)]
        public struct DEVMODE
        {

            private const int CCHDEVICENAME = 0x20;
            private const int CCHFORMNAME = 0x20;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
            public string dmDeviceName;
            public short dmSpecVersion;
            public short dmDriverVersion;
            public short dmSize;
            public short dmDriverExtra;
            public int dmFields;
            public int dmPositionX;
            public int dmPositionY;
            public ScreenOrientation dmDisplayOrientation;
            public int dmDisplayFixedOutput;
            public short dmColor;
            public short dmDuplex;
            public short dmYResolution;
            public short dmTTOption;
            public short dmCollate;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
            public string dmFormName;
            public short dmLogPixels;
            public int dmBitsPerPel;
            public int dmPelsWidth;
            public int dmPelsHeight;
            public int dmDisplayFlags;
            public int dmDisplayFrequency;
            public int dmICMMethod;
            public int dmICMIntent;
            public int dmMediaType;
            public int dmDitherType;
            public int dmReserved1;
            public int dmReserved2;
            public int dmPanningWidth;
            public int dmPanningHeight;

        }

        static void Main(string[] args)
        {            
                DEVMODE vDevMode = new DEVMODE();
                int i = 0;
                while (EnumDisplaySettings(null, i, ref vDevMode))
                {
                    Console.WriteLine("Width:{0} Height:{1} Color:{2} Frequency:{3}",
                                            vDevMode.dmPelsWidth,
                                            vDevMode.dmPelsHeight,
                                            1 << vDevMode.dmBitsPerPel,         vDevMode.dmDisplayFrequency
                                        );
                i++;
                }
        }

    }

}
14
ответ дан 6 December 2019 в 15:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: