Hola, Roberto.
A continuación te muestro el código para realizar lo que solicitas.
Cópialo en un módulo y, el ejemplo de uso, podrás utilizarlo en cualquier parte del código:
‘Este código muestra como cambiar la resolución del monitor mediante código en Visual Basic
‘La función principal usada se llama Cambia resolución y, sus parámetros no tienen problema (se le pasan los bits por píxel, el ancho y el alto de la resolución y ella misma se encarga de realizar la operación (con ayuda de APIs, algunas constantes y un tipo propio.
‘Si se realiza correctamente, devuelve True.
‘Contrariamente devuelve False.
‘------------------------
‘código módulo
‘------------------------
Public Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long
Public Const CCDEVICENAME = 32
Public Const CCFORMNAME = 32
Public Const DM_PELSWIDTH = &H80000
Public Const DM_PELSHEIGHT = &H100000
Public Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME '20
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Public DevM As DEVMODE
Public Function CambiaResolucion(BitPorPixel As Integer, Ancho As Long, Alto As Long) As Boolean
Dim a&
a = EnumDisplaySettings(0&, 0&, DevM)
DevM.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
DevM.dmBitsPerPel = BitPorPixel
DevM.dmPelsWidth = Ancho
DevM.dmPelsHeight = Alto
a = ChangeDisplaySettings(DevM, 0)
If a = 0 Then
CambiaResolucion = True
Else
CambiaResolucion = False
End If
End Function
‘------------------------
‘código módulo
‘------------------------
‘Ejemplo de uso del código:
‘Para cambiar la resolución a, por ejemplo, 800x600 usa este código, simplemente:
Dim a As Boolean
a = CambiaResolucion(4, 800, 600)
If a Then
MsgBox “Resolución cambiada correctamente”
Else
MsgBox “Error al cambiar resolución”
End If
___________________________
Espero que este código sea lo que buscabas.
Si te da algún error (personalmente, a mi me funciona perfectamente) o si tienes alguna duda al respecto, comunícalo aquí.
Hasta otra,
Zoto