begin process at 2010 02 10 00:01:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > GESTION RÉSOLUTION ÉCRAN

GESTION RÉSOLUTION ÉCRAN


 Information sur la source

Note :
5,33 / 10 - par 3 personnes
5,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Classé sous :ecran, résolution, gestion Niveau :Débutant Date de création :18/08/2001 Vu :6 946

Auteur : gdbill

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

encor une modif résolution écran mais avec la gestion de la fréquence et du mode couleur. Il marche sous VB6 et W2k. Faites moi savoir si il tourne sous les autres Win.

Source

  • 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

    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
 

 Conclusion

A mettre dans un module et appeler la
Sub ResolutionEcran(Chge As Boolean, sgWidth As Long, sgHeight As Long)


 Sources de la même categorie

Source avec Zip REMOTE SOUND AND VLC par sonataIII
Source avec Zip Source avec une capture INFO MÉMOIRE par 3aloula
Source avec Zip Source avec une capture CHANGER L'ICONE ET LE NOM D'UN LECTEUR DE CARTE par Sechaud
Source avec Zip Source avec une capture SYSTRAY + BALLOON - VARIANTE AVEC TEXTE DANS L'ICÔNE par jack
Source avec Zip Source avec une capture DATE-HEURE DE LANCEMENT D'UN PROGRAMME par jack

 Sources en rapport avec celle ci

SCRIPT VBS DE LECTURE DE CLEF DE LA BDR par djebbipgm
Source avec Zip GESTION ENSEIGNANTS par Elmarzougui
Source avec une capture Source .NET (Dotnet) APPLIQUER UNE RESOLUTION GRÂCE À DIRECTDRAW par tinux
Source .NET (Dotnet) CHANGER LA RESOLUTION DE L'ECRAN EN VB par vbtouf
Source avec Zip Source avec une capture (DES) ACTIVER ECRAN DE VEILLE par gregmena

Commentaires et avis

Commentaire de Repie le 13/01/2002 17:56:47

Marche pas sous XP

Commentaire de Tidus le 28/09/2002 21:11:21

Marche sous XP ...

Commentaire de Calou le 30/07/2003 12:00:27

J'ai un petit soucis, ça marche tres bien (sous W2K-SP3) en ce concerne les fonctionnalités, mais les changements ne sont pas conservés au redémarage de la machine.
Si qlqu'un à une idée ?

Commentaire de DNBPROCESS le 28/08/2003 00:40:37

Bien vu comme ca je retrouve pas mon ecran sur 32*32 !!  (:

madame n'aime pas quand c'est tout petit !

merci.

Commentaire de ngfr le 02/02/2004 10:07:24

Bonjour.

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

Commentaire de laurent207 le 03/04/2006 10:25:48

J'ai un problème, ton code fonctionne très bien sauf que si la résolution d'écran n'a jamais était changé dans propriété->paramétre, le code ne fonctionne pas.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

APPLICATION DANS TOUTES LES RESOLUTIONS D'ECRAN [ par serge ] j'ai fait une application avec ma résolution écran 1024x768 mais lorsque je la visualise en 800x600, il me manque une grande partie d'écran et impossi Prob. Résolution Ecran [ par dave ] bonjour à tous,mon but est de changer par programmation la résolution de l'écran.Lorsque j'utilise les modules disponibles sur ce site, si l'écran est Résolution d'ecran sur Excel et VBA [ par Quecks ] Slt,je crée des userform avec une résolution 800*600 mais lorsque je les envoie à ceux qui travail avec une résolution 1024*768, les userform ne couvr TAIILE DE FENTRE ET RESOLUTION D'ECRAN [ par acidburn23 ] Comment faire pour que la taille de ma fenetre soit proportionnelle à la résolution de l'ecran. Par exemple, mon appli doit pouvoir tourner sous une r Plein Ecran & changement de résolution [ par MaDC ] Salut!Je voudrais juste savoir :1) comment faire pour avoir mon application qui se lance en plein ecran comme un programme DOS et ainsi ne plus avoir Résolution d'ecran SANS VB6FR.dll ! (sos) [ par loskiller62 ] Je voudrais récuperer la résolution d'écran mais sans ke le prog ai besoin du fichier vb6fr.dllle coup du screen.width etcle coup du Private Declare F résolution ecran pr page web! très important [ par supernulle ] helloG réalisé un site en 1024*768 en fait j'aurais voulu savoir s'il y avait une solution pr tous ceux ki ont une résolution en 800/600 voit mon site résolution d ecran !! [ par supernulle ] helloG réalisé un site en 1024*768 en fait j'aurais voulu savoir s'il y avait une solution pr tous ceux ki ont une résolution en 800/600 voit mon site raccourcie clavier et résolution d'ecran [ par vick46 ] bonjour, j'ai fait un peu le tour du site et je ne trouve pas vraiment ce que je cherchemon probleme est que j'ai deux moniteur sur le meme pc qui bas Résolution Ecran [ par Sinsitrus ] Salut a tousJ'ai fouillé un peu partout ici pour trouver ce que je cherche mais en fait voilà, je voudrais qu'au lancement de mon appli, je voudrais q


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales