Page 1 sur 1
API pour régler la luminosité de l'écran ?
Publié : ven. 29/août/2014 20:08
par Ar-S
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.
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 6:00
par Ollivier
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
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 13:16
par Ar-S
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
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 15:20
par nico
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.
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 16:40
par falsam
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.
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
Avec une NVidia GeForce ça fonctionne
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 17:16
par PAPIPP
Merci Falsam
J'ai tout déréglé mon écran
mais c'est parfait.
A+
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 17:17
par Ar-S
@Falsam
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
J'ai bien un retour sur MoniteurMain mais PB ne semble pas reconnaitre GetMonitorBrightness_
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 17:30
par falsam
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
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 17:31
par falsam
Ar-S a écrit :Sur mon portable (Asus K70io à base de GT120M en carte graph) j'ai un message d'erreur (paramètre incorrect)
Je sens que ça ne va pas être facile.
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 17:36
par falsam
Re: API pour régler la luminosité de l'écran ?
Publié : sam. 30/août/2014 22:36
par Ollivier
Ar-S a écrit :J'ai bien un retour sur MoniteurMain mais PB ne semble pas reconnaitre GetMonitorBrightness_
Il a écrit :(ce week end c'est rénovation de mon bureau
j'ai tout viré)
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.
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 ?
Publié : mar. 02/sept./2014 19:50
par nico
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?
Re: API pour régler la luminosité de l'écran ?
Publié : mar. 02/sept./2014 19:54
par falsam
nico a écrit :Le gamma est là pour appliquer une correction pour la fidélité des couleurs, non?
Oui c est fait pour ça.
Re: API pour régler la luminosité de l'écran ?
Publié : mar. 02/sept./2014 20:44
par Ar-S
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.