Changer la resolution de windows

Soyez le premier à donner votre avis sur cette source.

Snippet vu 32 783 fois - Téléchargée 101 fois


Contenu du snippet

Comment changer la résolution de Windows ?

Mettez ce code dans un Module :

Source / Exemple :


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 Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Private Const DM_WIDTH = &H80000
Private Const DM_HEIGHT = &H100000
Private Const WM_DEVMODECHANGE = &H1B
Private Const HWND_BROADCAST = &HFFFF&
Private Const HWND_DESKTOP = 0

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

Private Sub ResolutionEcran(sgWidth As Single, sgHeight As Single)
    Dim blTMP As Boolean
    Dim lgTMP As Long
    lgTMP = 0
    Do
        blTMP = EnumDisplaySettings(0, lgTMP, dmEcran)
        lgTMP = lgTMP + 1
    Loop Until Not blTMP
    dmEcran.dmFields = DM_WIDTH Or DM_HEIGHT
    dmEcran.dmPelsWidth = sgWidth
    dmEcran.dmPelsHeight = sgHeight
    lgTMP = ChangeDisplaySettings(dmEcran, 0)
    Call SendMessage(HWND_BROADCAST, WM_DEVMODECHANGE, 0, 0)
End Sub

' Ensuite dans un pour changer la résolution :

Call ResolutionEcran(640, 480)

' Votre affichage passera en 640x480

A voir également

Ajouter un commentaire

Commentaires

Messages postés
14
Date d'inscription
samedi 8 octobre 2005
Statut
Membre
Dernière intervention
12 mai 2008

Alors moi jcomprends que dalle ! Surtout qu'il me souligne plein de truc et je sais pas comment intégrer dans mon Form1, c'est super mal expliqué vos code pour ceux qui connaissent pas grand chose
Messages postés
1
Date d'inscription
mardi 15 avril 2008
Statut
Membre
Dernière intervention
15 avril 2008

Est-il possible de "faire semblant" de changer la résolution sans que l'écran clignote avant d'adopter la nouvelle résolution. En fait, pour résoudre un problème de mauvais affichage de texte dans des copies d'écran et export.chart je souhaite juste passer un instant à 1024x768 pour ensuite revenir en mode normal 1280x800 - mais de façon transparent.
Mon problème est lié au format widescreen de mon portable et le constructeur ne propose pas de mise à jour du driver.
Messages postés
1
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
26 novembre 2006

Le code est bon mais pour qu'il fonctionne, il faut remplacer private sub resolutionEcran par public sub resolutionecran
Messages postés
3
Date d'inscription
dimanche 26 juillet 2009
Statut
Membre
Dernière intervention
2 juin 2005

Salut

C'est vrai que ce code est bien pratique, mais avec 2 petits problèmes (sachant que je suis en train de developper un jeu) :

1 - Le jeu allant être lancé sur des pcs qui possèdent a l'origine des résolutions différentes, comment enregistrer cette résolution afin de pouvoir la restaurer lorsqu'on quitte le jeu?

2 - Je note que lors du changement de résolution, la fréquence de rafraichissement de l'écran est également modifiée (60Hz). Comment faire pour conserver la fréquence d'origine?

Si quelqu'un a la réponse, merci de me le faire savoir. :)
Messages postés
36
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
23 mars 2005

C'est du a quoi l'erreur ligne 1 car 17 quand on colle ça dans un .vbs ?
Afficher les 23 commentaires

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.