Battery Power

Share your advanced PureBasic knowledge/code with the community.
User avatar
dobro
Enthusiast
Enthusiast
Posts: 766
Joined: Sun Oct 31, 2004 10:54 am
Location: France
Contact:

Post by dobro »

this code works

the level power battery

Code: Select all

#NUM_DISCHARGE_POLICIES = 4
; 

Structure POWER_ACTION_POLICY
    action.l
    flags.l
    EventCode.l
EndStructure

Structure SYSTEM_POWER_LEVEL
    Enable.b
    Spare.b[3]
    BatteryLevel.l
    powerpolicy.POWER_ACTION_POLICY
    MinSystemState.l
EndStructure

Structure GLOBAL_MACHINE_POWER_POLICY
    Revision.l
    LidOpenWakeAc.l
    LidOpenWakeDc.l
    BroadcastCapacityResolution.l
EndStructure

Structure GLOBAL_USER_POWER_POLICY
    Revision.l
    PowerButtonAc.POWER_ACTION_POLICY
    PowerButtonDc.POWER_ACTION_POLICY
    SleepButtonAc.POWER_ACTION_POLICY
    SleepButtonDc.POWER_ACTION_POLICY
    LidCloseAc.POWER_ACTION_POLICY
    LidCloseDc.POWER_ACTION_POLICY
    DischargePolicy.SYSTEM_POWER_LEVEL[#NUM_DISCHARGE_POLICIES]
    GlobalFlags.l
EndStructure

Structure GLOBAL_POWER_POLICY
    user.GLOBAL_USER_POWER_POLICY
    mach.GLOBAL_MACHINE_POWER_POLICY
EndStructure

Structure MACHINE_POWER_POLICY
    Revision.l
    MinSleepAc.l
    MinSleepDc.l
    ReducedLatencySleepAc.l
    ReducedLatencySleepDc.l
    DozeTimeoutAc.l
    DozeTimeoutDc.l
    DozeS4TimeoutAc.l
    DozeS4TimeoutDc.l
    MinThrottleAc.b
    MinThrottleDc.b
    pad1.b[2]
    OverThrottledAc.POWER_ACTION_POLICY
    OverThrottledDc.POWER_ACTION_POLICY
EndStructure
; 

Structure USER_POWER_POLICY
    Revision.l
    IdleAc.POWER_ACTION_POLICY
    IdleDc.POWER_ACTION_POLICY
    IdleTimeoutAc.l
    IdleTimeoutDc.l
    IdleSensitivityAc.b
    IdleSensitivityDc.b
    ThrottlePolicyAc.b
    ThrottlePolicyDc.b
    MaxSleepAc.l
    MaxSleepDc.l
    reserved.l[2]
    VideoTimeoutAc.l
    VideoTimeoutDc.l
    SpindownTimeoutAc.l
    SpindownTimeoutDc.l
    OptimizeForPowerAc.b
    OptimizeForPowerDc.b
    FanThrottleToleranceAc.b
    FanThrottleToleranceDc.b
    ForcedThrottleAc.b
    ForcedThrottleDc.b
EndStructure

Structure POWER_POLICY
    user.USER_POWER_POLICY
    mach.MACHINE_POWER_POLICY
EndStructure

*PP.POWER_POLICY


Procedure Refresh(timeout)
    Repeat
        powerpolicyglobal.GLOBAL_POWER_POLICY
        powerpolicy.POWER_POLICY
        syspowerstat.SYSTEM_POWER_STATUS
        
        If GetSystemPowerStatus_(syspowerstat)
            Select syspowerstat\ACLineStatus
                Case 0
                    SetGadgetText(0,"You are currently on Battery Power")
                Case 1
                    SetGadgetText(0,"You are currently on AC Power")
            EndSelect
            
            SetGadgetText(1,Str(syspowerstat\BatteryLifePercent)+"%")
            
            Select syspowerstat\BatteryFlag
                Case 1
                    SetGadgetColor(1,#PB_Gadget_FrontColor,RGB(0,0,0))
                Case 2
                    SetGadgetColor(1,#PB_Gadget_FrontColor,RGB(0,255,0))
                Case 4
                    SetGadgetColor(1,#PB_Gadget_FrontColor,RGB(0,0,255))
            EndSelect
        EndIf
        Delay(1000)
    ForEver
EndProcedure

If OpenWindow(0,0,0,300,80,"Power Meter",#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
    hwnd = WindowID(0)
    hdc = GetDC_(hwnd)
    
    If Not CreateGadgetList(hwnd)
        End
    EndIf
    
    TextGadget(0,20,20,270,20,"",#PB_Text_Center)
    TextGadget(1,20,40,270,20,"",#PB_Text_Center)
  
    CreateThread(@Refresh(),timeout)
    
    Repeat
        Event = WindowEvent()
        Select Event
            
        EndSelect
    Until Event = #PB_Event_CloseWindow
EndIf
Image
Windows 98/7/10 - PB 5.42
■ sites : http://michel.dobro.free.fr/
Post Reply