jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 8 févr. 2007 à 13:10
Il te suffit pour celà d'utiliser la fonction EnumDisplaySettings de la librairie user32 de l'Api de Windows, et, dans la structure :
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
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 * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
aller à la pêche de dmBitsPerPel (qui est la profondeur en cours des couleurs d'affichage)
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 8 févr. 2007 à 13:45
ce que j'ai écrit, morickno, n'est ni du VB ni du VB.net, mais tout simplement le rappel de l'existence d'une fonction de l'Api de Windows, fonction utilisable quel que soit le langage de développement utilisé.......
Vous n’avez pas trouvé la réponse que vous recherchez ?
morickno
Messages postés117Date d'inscriptionvendredi 22 avril 2005StatutMembreDernière intervention26 juin 2007 8 févr. 2007 à 15:12
J'ai réussis à utiliser cette exemple mais il me retourne systematiquement la même valeur pour dmBitsPerPel. Faut t'il initialiser quelque chose (DEVMODE) pour prendre en compte l'écran actif.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 8 févr. 2007 à 18:13
Je ne comprends pas ce que tu veux dire par "il me retourne systématiquement la même valeut" ....
La valeur retournée est celle que tu définis dans les paramètres de Windows (156 couleurs ou couleurs 16 bits ou couleur 32 bits) et ne change certes pas tant que ces paramètres ne sont pas changés !
ce bout de code marche parfaitement chez moi.
Voilà sous VB6 (adapte à VB.Net)
Option Explicit
Const ENUM_CURRENT_SETTINGS As Long = -1&
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
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 * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpmondeviceode As Any) As Boolean
Private Sub Form_Load()
Dim mondevice As DEVMODE
Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, mondevice)
MsgBox mondevice.dmBitsPerPel & " bits par pixel"
End Sub