csharp
using System;
using System.Runtime.InteropServices;
public class ResolucionPantalla
{
[DllImport("user32.dll")]
public static extern int ChangeDisplaySettingsEx(string lpszDeviceName, ref DEVMODE lpDevMode, IntPtr hwnd, uint dwflags, IntPtr lParam);
[DllImport("user32.dll")]
public static extern int EnumDisplaySettings(string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode);
[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public uint dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string dmFormName;
public short dmLogPixels;
public uint dmBitsPerPel;
public uint dmPelsWidth;
public uint dmPelsHeight;
public uint dmDisplayFlags;
public uint dmDisplayFrequency;
public uint dmICMMethod;
public uint dmICMIntent;
public uint dmMediaType;
public uint dmDitherType;
public uint dmReserved1;
public uint dmReserved2;
public uint dmPanningWidth;
public uint dmPanningHeight;
}
public static void CambiarResolucion(int ancho, int alto)
{
DEVMODE devMode = new DEVMODE();
devMode.dmSize = (short)Marshal.SizeOf(devMode);
if (EnumDisplaySettings(null, -1, ref devMode) != 0)
{
devMode.dmPelsWidth = (uint)ancho;
devMode.dmPelsHeight = (uint)alto;
int result = ChangeDisplaySettingsEx(null, ref devMode, IntPtr.Zero, 0x00000004 | 0x00000002, IntPtr.Zero);
if (result != 0)
{
Console.WriteLine("No se pudo cambiar la resolución de la pantalla.");
}
}
}
public static void RestaurarResolucionOriginal()
{
ChangeDisplaySettingsEx(null, IntPtr.Zero, IntPtr.Zero, 0, IntPtr.Zero);
}
public static void Main()
{
// Cambiar a la resolución deseada
CambiarResolucion(800, 600);
// Realizar la presentación
// Restaurar la resolución original
RestaurarResolucionOriginal();
}
}