Changer resolution ecran avec sendkeys

Description

Petit code un peu idiot qui echange la resolution de l'ecran entre 800x600 et 1024x768 automatiquement. (Pratique qd plusieurs utilisateurs d'un meme ordi sont habitues a des resolutions differentes.)
Il utilise une simulation de clique droit et des SendKeys. Pad d'API, c'est pour l'amour de l'art.

Source / Exemple :


' Executer ce code en fenetre NORMAL avec VB, pas MAXIMISED.
' Le coin haut-gauche de l'ecran doit laisser apparaitre le fond du bureau

Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetCursorPos& Lib "user32" (ByVal X As Long, ByVal Y As Long)

Sub Main()
  Dim Attend As Long
  'affiche le menu contextuel de l'ecran
  SetCursorPos 0, 0
  Call mouse_event(&H8008, 0, 0, 0, 0) '
  Call mouse_event(&H8010, 0, 0, 0, 0)
  DoEvents
  
  'Affiche les proprietes d'affichage
  SendKeys "{UP}", False
  DoEvents
  SendKeys "~", True

  'Attend un peu que le panneau s'ouvre
  Do
    DoEvents
    Attend = Attend + 1
  Loop Until Attend > 50
  
  'active un onglet vers la gauche
  SendKeys "+^{TAB}", True
  DoEvents
  
  'active le slider de resolution
  SendKeys "{TAB 3}", True
  DoEvents
  
  ' aggrandi ou rapetisse la resolution en fonction de la
  ' resolution actuelle. Si il faut deplacer plus d'une fois
  ' le slider dans un sens ou l'autre, utiliser
  ' SendKeys "{RIGHT x}", True  ou x est le nombre de deplacement
  If Screen.Width <= 12000 Then
    SendKeys "{RIGHT}", True
  Else
    SendKeys "{LEFT}", True
  End If
  DoEvents
  
  'Valide en appuyant sur entree, entree, Y
  SendKeys "~", True
  DoEvents
  
  SendKeys "~", True
  DoEvents
  
  SendKeys "Y", True
  DoEvents
End Sub

Conclusion :


S'utilise bien avec un raccourci directement sur le bureau.
Il faut que le premier pixel en haut a gauche de l'ecran soit le fond du bureau sinon le menu contextuel ne peut pas apparaitre.

Codes Sources

A voir également

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.