Soyez le premier à donner votre avis sur cette source.
Snippet vu 9 473 fois - Téléchargée 51 fois
Public oldX, oldY, oldR, oldC As Long ' Résolution écran avant application 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 FindWindowA Lib "user32" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare Function SetWindowPos Lib "user32" (ByVal handleW1 As Long, _ ByVal handleW1InsertWhere As Long, ByVal w As Long, _ ByVal x As Long, ByVal y As Long, ByVal z As Long, _ ByVal wFlags As Long) As Long Private Const CCHDEVICENAME = 32 Private Const CCHFORMNAME = 32 Private Const DM_BITSPERPEL = &H40000 Private Const DM_WIDTH = &H80000 Private Const DM_HEIGHT = &H100000 Private Const DM_DISPLAYFREQUENCY = &H400000 Private Const WM_DEVMODECHANGE = &H1B Private Const HWND_BROADCAST = &HFFFF& Private Const HWND_DESKTOP = 0 Const TOGGLE_HIDEWINDOW = &H80 Const TOGGLE_UNHIDEWINDOW = &H40 Private Type DEVMODE dmDeviceName As String * CCHDEVICENAME 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 * CCHFORMNAME 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 dynSetting() As String Dim handleW1 As Long ' =================================== DEBUT DU CODE ================================ '---- Change la résolution écran Public Sub ResolutionEcran(Chge As Boolean, sgWidth As Long, sgHeight As Long) Dim blTMP As Boolean Dim lgTMP As Long Dim compt As Integer If Chge = True Then ' modification de la résolution - début du programme blTMP = EnumDisplaySettings(0, -1, dmEcran) ' stockage de la résolution écran avant modif oldX = dmEcran.dmPelsWidth oldY = dmEcran.dmPelsHeight oldR = dmEcran.dmDisplayFrequency oldC = dmEcran.dmBitsPerPel If Not oldX = sgWidth Then ' si la résolution est différente de la résolution demandée lgTMP = 0 cpt = 0 ' compteur d'affichage ReDim dynSetting(0) Do ' parcours tous les affichages possibles blTMP = EnumDisplaySettings(0, lgTMP, dmEcran) lgTMP = lgTMP + 1 If dmEcran.dmPelsWidth = sgWidth Then ' si résolution demandée dynSetting(cpt) = Right("000" & dmEcran.dmBitsPerPel, 3) & _ Right("000" & dmEcran.dmDisplayFrequency, 3) cpt = cpt + 1 ReDim Preserve dynSetting(cpt) End If Loop Until Not blTMP ' right(dynSetting(cpt - 1),3) ' Fréquence maximale acceptée par la carte ' left(dynSetting(cpt - 1),3) ' Mode couleur maxi accepté par la carte For compt = cpt - 1 To 0 Step -1 If CLng(Left(dynSetting(compt), 3)) = oldC Then If CLng(Right(dynSetting(compt), 3)) = oldR Then ' si même mode couleur et même fréquence Exit For Else ' même mode couleur mais fréquence inférieure If CLng(Right(dynSetting(compt), 3)) > 71 Then ' contrainte sur la fréquence 72Hz Exit For End If End If Else ' mode couleur inférieur If CLng(Right(dynSetting(comp), 3)) = oldR Then Exit For Else If CLng(Right(dynSetting(comp), 3)) > 71 Then ' contrainte sur la fréquence 72Hz Exit For End If End If End If Next If cpt = 0 Then 'alerte : votre système ne supporte pas la résolution demandée End End If Call Change(sgWidth, sgHeight, CLng(Left(dynSetting(compt), 3)), CLng(Right(dynSetting(compt), 3))) End If Else ' modification de la résolution - fin du programme Call Change((oldX), (oldY), (oldC), (oldR)) End If End Sub Private Sub Change(width As Long, height As Long, pel As Long, freq As Long) dmEcran.dmFields = DM_BITSPERPEL Or DM_WIDTH Or DM_HEIGHT Or DM_DISPLAYFREQUENCY dmEcran.dmPelsWidth = width dmEcran.dmPelsHeight = height dmEcran.dmBitsPerPel = pel dmEcran.dmDisplayFrequency = freq lgTMP = ChangeDisplaySettings(dmEcran, 0) Call SendMessage(HWND_BROADCAST, WM_DEVMODECHANGE, 0, 0) End Sub
3 avril 2006 à 10:25
2 févr. 2004 à 10:07
Pourrais-tu faire un zip STP?
car je ne compren pa où il faut mettre le code.
C'est tout le code qu'il mettre dans un module ou seulement le début?
Où dois-je mettre le début du code? comment l'appelé?
Merci
28 août 2003 à 00:40
madame n'aime pas quand c'est tout petit !
merci.
30 juil. 2003 à 12:00
Si qlqu'un à une idée ?
28 sept. 2002 à 21:11
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.