如何使用C#列出可用的video模式?

我找到了很好的使用C ++( http://www.codeproject.com/KB/tips/resswitch.aspx )的例子,但没有在C#中找到。

有人可以帮帮忙吗?

编辑:列出video模式的确切function是:

BOOL CVideoModes::GetAvailableVideoModes(CAvailableVideoModes& modes) { modes.SetSize(0, 5); int i=0; DEVMODE dm; while (EnumDisplaySettings(NULL, i, &dm)) { CVideoMode thismode(dm.dmBitsPerPel, dm.dmPelsWidth, dm.dmPelsHeight, dm.dmDisplayFrequency); modes.SetAtGrow(i, thismode); ++i; } modes.FreeExtra(); return (i>0); } 

但是因为我无法理解C ++代码。 我在哪里可以找到“thismode”function?

如果您的意思是video模式是可用的分辨率,请尝试调用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++; } } } }