ResolutionEcran permet :
-Changement de résolution (800x600...)
-Changement de fréquence de rafraichissement (60Hz)
-Changement de qualité couleur (16 couleurs, 256 couleurs, High Color, True Color)
CurrentDisplaySettings permet de recupérer les param. actuels
Source / Exemple :
'A mettre dans un module
Option Explicit
Private 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
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const DM_BITSPERPEL = &H40000
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Const CDS_UPDATEREGISTRY = &H1
Private Const CDS_TEST = &H4
Private Const DISP_CHANGE_SUCCESSFUL = 0
Private Const DISP_CHANGE_RESTART = 1
Private Const ENUM_CURRENT_SETTINGS = &HFFFF - 1
Private Const WM_DEVMODECHANGE = &H1B
Private Const HWND_BROADCAST = &HFFFF&
Private Const HWND_DESKTOP = 0
Private Type DEVMODE
dmDeviceName As String * 32
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 * 32
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Dim dmEcran As DEVMODE
Dim dmType As DEVMODE
Public Function CurrentDisplaySettings() As DEVMODE
Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, CurrentDisplaySettings)
End Function
Public Sub ResolutionEcran(sgWidth As Long, sgHeight As Long, FrequenceRefresh As Long, QColor As Long)
dmEcran.dmSize = LenB(dmEcran)
Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, dmEcran)
dmEcran.dmPelsWidth = sgWidth
dmEcran.dmPelsHeight = sgHeight
dmEcran.dmDisplayFrequency = FrequenceRefresh 'en Hz
'4 : 16 colors
'8 : 256 colors
'16 : High Color
'24 : True Color
'32 : True Color
dmEcran.dmBitsPerPel = QColor
Call ChangeDisplaySettings(dmEcran, CDS_UPDATEREGISTRY)
Call SendMessage(HWND_BROADCAST, WM_DEVMODECHANGE, 0, 0)
Call SendMessage(GetDesktopWindow, WM_DEVMODECHANGE, 0, 0)
End Sub
Conclusion :
Je l'ai testé sous XP mais je sais pas si il marche sous les autres Win.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.