Option ExplicitConst DM_BITSPERPEL As Long = &H40000Const DM_PELSWIDTH As Long = &H80000Const DM_PELSHEIGHT As Long = &H100000Const CDS_FORCE As Long = &H80000000Const CCDEVICENAME As Long = 32Const CCFORMNAME As Long = 32Private 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 dmUnusedPadding As Integer dmBitsPerPel As Long dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As LongEnd TypePrivate Declare Function EnumDisplaySettings Lib "user32" Alias _ "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, _ ByVal modeIndex As Long, lpDevMode As Any) As BooleanPrivate Declare Function ChangeDisplaySettings Lib "user32" Alias _ "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwflags As Long) As Long' change the screen resolution mode'' returns True if the requested resolution mode is among those' supported by the display adapter (otherwise it doesn't even' try to change the screen resolution)Function ChangeScreenResolution(ByVal Width As Long, ByVal Height As Long, _ ByVal NumColors As Long, Optional Frequency As Long) As Boolean Dim lpDevMode As DEVMODE Dim index As Long ' set the DEVMODE flags and structure size lpDevMode.dmSize = Len(lpDevMode) lpDevMode.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT Or DM_BITSPERPEL ' retrieve info on the Nth display mode, exit if no more Do While EnumDisplaySettings(0, index, lpDevMode) > 0 ' check whether this is the mode we're looking for If lpDevMode.dmPelsWidth = Width And lpDevMode.dmPelsHeight = Height _ And 2 ^ lpDevMode.dmBitsPerPel = NumColors Then ' check that the frequency is also the one we're looking for If Frequency = 0 Or Frequency = lpDevMode.dmDisplayFrequency Then ' try changing the resolution If ChangeDisplaySettings(lpDevMode, CDS_FORCE) = 0 Then ' zero means success ChangeScreenResolution = True Exit Do End If End If End If ' skip to next screen mode index = index + 1 LoopEnd Function