API pour régler la luminosité de l'écran ?
API pour régler la luminosité de l'écran ?
Hello,
Je suis en galère pour régler la luminosité de mon portable. Oui je peux modifier la luminosité via le menu de windows et la gestion d'alimentation mais comme je suis partisan des solutions efficaces, j'aimerai faire une appli qui permette de baisser ou monter la luminosité à X en passant par les API directement du bureau.
J'ai trouvé (je pense) les bonnes à savoir : GetMonitorBrightness et SetMonitorBrightness
Je me dis que GetMonitorCapabilities ou GetPhysicalMonitorsFromHMONITOR doit être aussi nécessaire mais bon.
Je n'arrive jamais à piger la transcription API / PB.
Si quelqu'un pouvait m'éclairer.
D'avance merci.
Je suis en galère pour régler la luminosité de mon portable. Oui je peux modifier la luminosité via le menu de windows et la gestion d'alimentation mais comme je suis partisan des solutions efficaces, j'aimerai faire une appli qui permette de baisser ou monter la luminosité à X en passant par les API directement du bureau.
J'ai trouvé (je pense) les bonnes à savoir : GetMonitorBrightness et SetMonitorBrightness
Je me dis que GetMonitorCapabilities ou GetPhysicalMonitorsFromHMONITOR doit être aussi nécessaire mais bon.
Je n'arrive jamais à piger la transcription API / PB.
Si quelqu'un pouvait m'éclairer.
D'avance merci.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: API pour régler la luminosité de l'écran ?
Bonjour Ar-S,
je pense que MonitorFromWindow fera l'affaire pour trouver la main du moniteur.
Tu vois le HMonitor en préfixe de fonction donc la syntaxe s'écrit certainement:
MoniteurMain = MonitorFromWindow_(
Ensuite, viennent les arguments en paramètres.
Tu ne lui indiques pas de main de fenêtre (0) en 1er param, et la constante MONITOR_
DEFAULTTOPRIMARY en 2nd param.
Avec cette main tu peux exécuter SetMonitorBrightness ou GetMonitorBrightness.
Espérant t'éclairer
je pense que MonitorFromWindow fera l'affaire pour trouver la main du moniteur.
Tu vois le HMonitor en préfixe de fonction donc la syntaxe s'écrit certainement:
MoniteurMain = MonitorFromWindow_(
Ensuite, viennent les arguments en paramètres.
Tu ne lui indiques pas de main de fenêtre (0) en 1er param, et la constante MONITOR_
DEFAULTTOPRIMARY en 2nd param.
Avec cette main tu peux exécuter SetMonitorBrightness ou GetMonitorBrightness.
Espérant t'éclairer
Re: API pour régler la luminosité de l'écran ?
Merci Ollivier, j'essaye d'avancer là dessus dès que possible (ce week end c'est rénovation de mon bureau j'ai tout viré).
je posterai ici suite à l'avancement de mon code
je posterai ici suite à l'avancement de mon code
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: API pour régler la luminosité de l'écran ?
J'ai créer le code, malheureusement, il n'est pas toujours possible d'obtenir le handle physique du moniteur (hPhysicalMonitor), j'obtiens bien la description mais le handle vaut 0, après quelques recherches il semble qu'il faille que le moniteur soit compatible DDC/CI.
Pour le savoir, il suffit d'utiliser un soft tel que softMCCS.
Pour le savoir, il suffit d'utiliser un soft tel que softMCCS.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: API pour régler la luminosité de l'écran ?
Un code de luis pour qui consiste à faire correction gamma. Mais je ne sais pas si ça fonctionne sur toutes les cartes vidéos.
L'occasion pour chacun d'entres nous de nous faire un feedback de ce code en spécifiant la carte vidéo.
Avec une NVidia GeForce ça fonctionne
L'occasion pour chacun d'entres nous de nous faire un feedback de ce code en spécifiant la carte vidéo.
Code : Tout sélectionner
;Change Gamma Ramp - By Luis
Declare.s ShowAPIError(CustomError=#False, ErrorCode=0)
;Renseigner la valeur gamma ici en sachant que 128 est la valeur normal
; En dessous ça devient sombre, et au dessus ça devient plus clair
value = 10
Dim iGammaRamp.w(2,255)
For i = 0 To 255
iArrayValue = i * (value + 128)
If iArrayValue > 65535
iArrayValue = 65535
EndIf
iGammaRamp(0,i) = iArrayValue
iGammaRamp(1,i) = iArrayValue
iGammaRamp(2,i) = iArrayValue
Next
SetDeviceGammaRamp_(GetDC_(0),@iGammaRamp())
Debug ShowAPIError()
Procedure.s ShowAPIError(CustomError=#False, ErrorCode=0)
Protected Buffer.s
Protected NumberOfChars
If Not CustomError
ErrorCode=GetLastError_()
EndIf
Buffer.s=Space(4096)
NumberOfChars=FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM,0,ErrorCode,0,Buffer.s,Len(Buffer.s),0)
ProcedureReturn Left(Buffer.s,NumberOfChars-2)
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: API pour régler la luminosité de l'écran ?
Merci Falsam
J'ai tout déréglé mon écran
mais c'est parfait.
A+
J'ai tout déréglé mon écran
mais c'est parfait.
A+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Re: API pour régler la luminosité de l'écran ?
@Falsam
Sur mon portable (Asus K70io à base de GT120M en carte graph) j'ai un message d'erreur (paramètre incorrect).
@Ollivier,
J'ai bien un retour sur MoniteurMain mais PB ne semble pas reconnaitre GetMonitorBrightness_
Sur mon portable (Asus K70io à base de GT120M en carte graph) j'ai un message d'erreur (paramètre incorrect).
@Ollivier,
Code : Tout sélectionner
MoniteurMain = MonitorFromWindow_(0, #MONITOR_DEFAULTTOPRIMARY)
Debug MoniteurMain
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: API pour régler la luminosité de l'écran ?
PAPIPP a écrit :J'ai tout déréglé mon écran/quote]Oops désolé. Un code avec trackbar pour régler plus facilement peut etre.
Code : Tout sélectionner
Enumeration Window
#Mainform
EndEnumeration
Enumeration Gadget
#GamaRamp
EndEnumeration
Global Dim iGammaRamp.w(2,255)
Declare MainForm_Open()
Declare SetGammaRamp()
Procedure MainForm_Open()
OpenWindow(#Mainform, 0, 0, 300, 50, "Gamma Ramp")
TrackBarGadget(#GamaRamp, 10, 10, 280, 24, 0, 255)
SetGadgetState(#GamaRamp, 128)
BindGadgetEvent(#GamaRamp, @SetGammaRamp())
EndProcedure
Procedure SetGammaRamp()
Protected Value = GetGadgetState(#GamaRamp)
For i = 0 To 255
iArrayValue = i * (value + 128)
If iArrayValue > 65535
iArrayValue = 65535
EndIf
iGammaRamp(0,i) = iArrayValue
iGammaRamp(1,i) = iArrayValue
iGammaRamp(2,i) = iArrayValue
Next
SetDeviceGammaRamp_(GetDC_(0),@iGammaRamp())
EndProcedure
MainForm_Open()
Repeat : Until WaitWindowEvent(100) = #PB_Event_CloseWindow
Dernière modification par falsam le sam. 30/août/2014 17:31, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: API pour régler la luminosité de l'écran ?
Je sens que ça ne va pas être facile.Ar-S a écrit :Sur mon portable (Asus K70io à base de GT120M en carte graph) j'ai un message d'erreur (paramètre incorrect)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: API pour régler la luminosité de l'écran ?
un autre code à essayer sur ce lien http://www.purebasic.fr/english/viewtop ... 59#p448859
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: API pour régler la luminosité de l'écran ?
Ar-S a écrit :J'ai bien un retour sur MoniteurMain mais PB ne semble pas reconnaitre GetMonitorBrightness_
Je pense que tu n'es pas le seul à faire de la rénovation: les deux informations mises en amont, dans la seconde page ciblée par le premier de tes hyperliens (lien + remarque sur l'utilisation de la main nulle) sont occultées désormais.Il a écrit :(ce week end c'est rénovation de mon bureau
j'ai tout viré)
Si, en aval, il n'y a pas de reconnaissance d'une instruction, et si un logiciel légal est disponible, il doit y avoir de très bonnes raisons, notamment en terme de sécurité.
Re: API pour régler la luminosité de l'écran ?
Est ce que ce n'est pas un peu farfelue de modifier la luminosité en changeant le gamma?
Parce que lorsque je change la luminosité par le panneau de configuration, mon gamma lui ne change pas!
Le gamma est là pour appliquer une correction pour la fidélité des couleurs, non?
Parce que lorsque je change la luminosité par le panneau de configuration, mon gamma lui ne change pas!
Le gamma est là pour appliquer une correction pour la fidélité des couleurs, non?
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: API pour régler la luminosité de l'écran ?
Oui c est fait pour ça.nico a écrit :Le gamma est là pour appliquer une correction pour la fidélité des couleurs, non?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: API pour régler la luminosité de l'écran ?
Bon après plusieurs essais, je vais abandonner l'idée. Le rapport prise de choux/pénibilité est bien trop disproportionné 
Merci pour vos idées.

Merci pour vos idées.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels