Récupérer les infos sur un écran


Propriétés du code


Date de création : 29/04/2007 à 23:45:00
0 Commentaire(s)
  MadMatt

 

Présentation


Permet de récupérer des infos sur un écran physique.

Il faut connaitre son handle hMonitor, pour cela il faut énumérer les écrans avec :
EnumDisplayMonitors

Seulement il faut une fonction de CallBack MonitorEnumProc, et j'ai mélangé ça avec une classe donc je ne peux pas mettre le code pour énumérer les écrans. Mais vous pouvez aller voir dans la librairie, dans la classe Monitor

 

Code


' Récupérer des dimensions du système
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
' Enumerer les ecrans
Public Declare Function EnumDisplayMonitors Lib "user32" (ByVal hDC As Long, lprcClip As Any, ByVal lpfnEnum As Long, ByVal dwData As Long) As Long
Public Declare Function GetMonitorInfoW Lib "user32" (ByVal hMonitor As Long, lpmi As MONITORINFOEXW) As Long

' Taille du nom d'un périphérique
Public Const CCHDEVICENAME = 32

' Infos sur les écrans
Public Const MONITORINFOF_PRIMARY = &H1
Public Const SM_XVIRTUALSCREEN = 76
Public Const SM_YVIRTUALSCREEN = 77
Public Const SM_CXVIRTUALSCREEN = 78
Public Const SM_CYVIRTUALSCREEN = 79
Public Const SM_CMONITORS = 80
Public Const SM_SAMEDISPLAYFORMAT = 81

' Infos sur un ecran
Public Type MONITORINFOEXW
  cbSize As Long
  rcMonitor As RECT
  rcWork As RECT
  dwFlags As Long
  b(0 To CCHDEVICENAME * 2 - 1) As Byte
End Type


' Les infos sur un écran
Public Type MonitorInfos
    Handle As Long
    Name As String
    Dimensions As RECT
    WorkingArea As RECT
    IsMainMonitor As Boolean
End Type




'---------------------------------------------------------------------------------------
' Procedure : GetMonitorInfos
' DateTime  : 29/04/2007 23:45
' Author    : Vb System Library
' Purpose  : Renvoie les infos du moniteur
' Params    : hMonitor : Handle de l'écran
'---------------------------------------------------------------------------------------
Public Function GetMonitorInfos(ByVal hMonitor As Long) As MonitorInfos

    Dim Mretour As MonitorInfos
    Dim MonInfos As MONITORINFOEXW
    Dim iPos As Long

    Mretour.Handle = hMonitor
    ' Retrouve les infos
    MonInfos.cbSize = Len(MonInfos)
    GetMonitorInfoW hMonitor, MonInfos
    With MonInfos
        Mretour.Dimensions = .rcMonitor
        Mretour.WorkingArea = .rcWork
        Mretour.IsMainMonitor = ((.dwFlags And MONITORINFOF_PRIMARY) = MONITORINFOF_PRIMARY)
        Mretour.Name = .b
    End With

    ' Formate le nom
    iPos = InStr(Mretour.Name, vbNullChar)
    If (iPos > 0) Then
        Mretour.Name = Left$(Mretour.Name, iPos - 1)
    End If
   
    GetMonitorInfos = Mretour

End Function


 
 

Modifier le code

Seul les admins et l'auteur du code lui même peuvent modifier ce code.

 

Commentaires


Ajouter un commentaire


Vous devez être connecté pour pouvoir poster un commentaire.

 
 

Valid HTML 4.01 Transitional Valid CSS

Site web de Vb System Library version 1.3
Developpement et design réalisé par : Matthieu Napoli (MadMatt)
© 2007 Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
Temps d'execution de la page : 0.006 s
www.mnapoli.fr