;Autor: GPI ;http://www.purebasic.fr/german/viewtopic.php?p=279912#p279912 EnableExplicit #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, i 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 SetCurrentBrightness(50) Delay(1000) SetCurrentBrightness(100) ; IDE Options = PureBasic 5.31 (Windows - x64) ; CursorPosition = 2 ; Folding = -- ; EnableUnicode ; EnableXP ; EnableUser ; EnableCompileCount = 0 ; EnableBuildCount = 0