Aktuelle Zeit: 23.07.2019 15:23

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Laptop-Display-Helligkeit (nicht Gamma-Wert)
BeitragVerfasst: 11.09.2010 14:53 
Offline

Registriert: 29.08.2004 13:18
Wer schon immer mal die Helligkeit seines Laptop-Displays ändern wollte (hiermit ist *NICHT* der Gamma-Wert gemeint!) dürfte sich hierrüber freuen:

Code:
#IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS = $00230498
#IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS = $0023049C
#IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS  = $00230494

Structure DISPLAY_BRIGHTNESS
  ucDisplayPolicy.b ;1=ac Strom, 2=dc Akku, 3=beides
  ucACBrightness.b
  ucDCBrightness.b
EndStructure

Global Dim BrightLevel.b(257); Mögliche Farbstufen
Global maxBrightLevel=-1 ; Anzahl Stufen
Global hLCD.i=#INVALID_HANDLE_VALUE ; Handle des Bildschirms

Global displayBrightness.DISPLAY_BRIGHTNESS

Declare GetLCDhandle()

Procedure GetSupportedBrightness(); Unterstütze Helligkeitsstufen, maxStufen
  Protected returnedBytes.l
  If maxBrightLevel<1
    ; Bisher keine Zwischenstufen abgefragt
    If GetLCDhandle()
      If DeviceIoControl_(hlcd,#IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS,#Null,0,@BrightLevel()+1,256,@returnedbytes,#Null)
        maxBrightLevel=returnedBytes+1
        BrightLevel(0)=0
        BrightLevel(maxBrightLevel)=100
        ;For i=0 To maxstufen
        ;  Debug Str(i)+" "+Str(stufen(i))
        ;Next
      EndIf
    EndIf
  EndIf
  ProcedureReturn maxBrightLevel
EndProcedure
Procedure GetCurrentBrightness(); gibt aktuelle helligekeit zurück oder -1
  Protected returnedbytes.l
  If getlcdhandle()
    If DeviceIoControl_(hlcd,  #IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS,#Null,0,@displayBrightness, SizeOf(displayBrightness),@returnedBytes,#Null)
      If displayBrightness\ucDisplayPolicy =1
        ProcedureReturn displayBrightness\ucACBrightness
      Else
        ProcedureReturn displaybrightness\ucDCBrightness
      EndIf
    EndIf
  EndIf
  ProcedureReturn -1
EndProcedure
Procedure GetCurrentLevel();Helligkeit in Stufen
  Protected cur.l,ret.l
  ret=-1
  If GetSupportedBrightness()>0
    cur=GetCurrentBrightness()
    ;Debug "Current:"+Str(cur)
    For i=0 To maxBrightLevel
      If cur>=BrightLevel(i)
        ret=i
      EndIf
    Next
  EndIf
  ProcedureReturn ret
EndProcedure
Procedure SetCurrentBrightness(Value.b)
  Protected returnedBytes.l
  If GetCurrentBrightness()>-1
    If displaybrightness\ucDisplayPolicy=1
      displayBrightness\ucACBrightness=Value
    Else
      displayBrightness\ucDCBrightness=Value
    EndIf
    ProcedureReturn DeviceIoControl_(hLCD, #IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS, @displayBrightness, SizeOf(displayBrightness), #Null, 0, @returnedBytes, #Null)
  EndIf
EndProcedure
Procedure SetCurrentLevel(Level)
  If GetSupportedBrightness()>0
    If level>=0 And level<=maxBrightLevel
      ProcedureReturn SetCurrentBrightness(BrightLevel(Level) )
    EndIf
  EndIf
  ProcedureReturn 0
EndProcedure
Procedure GetLCDhandle()
  If hlcd=#INVALID_HANDLE_VALUE
    hLCD = CreateFile_("\\.\LCD", #GENERIC_READ, #FILE_SHARE_READ | #FILE_SHARE_WRITE, #Null, #OPEN_EXISTING, 0, #Null)
  EndIf
  If hlcd=#INVALID_HANDLE_VALUE
    ProcedureReturn #False
  Else
    ProcedureReturn #True
  EndIf
EndProcedure
Procedure CloseLCDhandle()
  If hlcd<>#INVALID_HANDLE_VALUE
    CloseHandle_(hLCD)
    hlcd=#INVALID_HANDLE_VALUE
  EndIf 
EndProcedure


mit GetSupportedBrightness() wird abgefragt, welche Helligkeitsstufen von Display unterstützt werden.
BrightLevel.b(0-x) werden die Werte gespeichert und maxBrightLevel gibt an, wie hoch x sein kann.

SetCurrentLevel(Level)/GetCurrentLevel() setzt bzw. fragt den aktuelle Helligkeit ab (kann zwischen 0-BrightLevel liegen)

GetCurrentBrightness()/SetCurrentBrightness(Value) fragt/Setzt die Helligkeit. Der Wer kann zwischen 0 - 100 liegen. Achtung man kann nur die Werte hernehmen, die das Display unterstützt. Diese Werte kann man mit GetSupportedBrightness abfragen.

Mein Display unterstützt bspw. nur 0,15,24,30,45,60,80,100%.

_________________
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Laptop-Display-Helligkeit (nicht Gamma-Wert)
BeitragVerfasst: 11.09.2010 17:04 
Offline
Benutzeravatar

Registriert: 14.08.2007 15:41
Wohnort: Lelbach
Hallo GPI! Warst aber lange im Urlaub. :D

_________________
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye