Werner_Bayern hat geschrieben:
kennt jemand die nChange-Rückgabewerte des o. g. Slots?
Ein XP-System scheint da Werte ausserhalb der Xbase-Definition (0, 1, 4, 5, 6, 7, 18) zu liefern, das muss ich aber beim Kunden noch testen.
es gibt ja noch andere Konstanten für andere Zwecke
ist es ein Notebook, dann probiere mal das hier von Pablo ( benötigt ot4xb )
Code: Alles auswählen
#include "ot4xb.ch"
// ---------------------------------------------------------------------------
proc main()
local oPws := SYSTEM_POWER_STATUS():New()
local aACStats
if GetSystemPowerStatus(oPws)
? "AC Status : " , oPws:cACLineStatus
? "Battery Flags : " , oPws:cBatteryFlag
? "Battery Life Percent : " , iif( oPws:BatteryLifePercent == 255 , "Unknow" ,;
AllTrim(Str(oPws:BatteryLifePercent)) + "%")
? "Battery Life Time : " , iif( oPws:BatteryLifeTime == -1 , "Unknow" ,;
AllTrim(Str(oPws:BatteryLifeTime)) + " seconds")
? "Battery Full Life Time : " , iif( oPws:BatteryFullLifeTime == -1 , "Unknow" ,;
AllTrim(Str(oPws:BatteryFullLifeTime)) + " seconds")
else
? "GetSystemPowerStatus(oPws) == .F."
end
inkey(0)
return
// ---------------------------------------------------------------------------
BEGIN STRUCTURE SYSTEM_POWER_STATUS
MEMBER BYTE ACLineStatus
MEMBER BYTE BatteryFlag
MEMBER BYTE BatteryLifePercent
MEMBER BYTE Reserved1
MEMBER DWORD BatteryLifeTime
MEMBER DWORD BatteryFullLifeTime
// -----------------
DYNAMIC READONLY PROPERTY cACLineStatus ;
BLOCK {|s| {"Unknow","On","Off"}[ (aScan({1,0},s:ACLineStatus) +1)] }
// -----------------
DYNAMIC READONLY PROPERTY cBatteryFlag ;
BLOCK {|s| iif(lAnd(s:BatteryFlag, 1),"High ","") +;
iif(lAnd(s:BatteryFlag, 2),"Low ","")+;
iif(lAnd(s:BatteryFlag, 4),"Critical ","")+;
iif(lAnd(s:BatteryFlag, 8),"Charging ","")+;
iif(lAnd(s:BatteryFlag,128),"No System Batery ","")+;
iif(s:BatteryFlag==255,"Unknow Status","") }
// -----------------
END STRUCTURE
// ---------------------------------------------------------------------------
DLL KERNEL32 IMPORT GetSystemPowerStatus AS BOOL PARAM pPws AS POINTER