systemPowerStatus

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

systemPowerStatus

Beitrag von Werner_Bayern »

Servus,

kennt jemand die nChange-Rückgabewerte des o. g. Slots?
<nChange> ist ein numerischer Wert mit Informationen über die Art der Statusänderung. Die diesem Parameter zugewiesenen Werte sind in der folgenden Tabelle zusammengefasst.
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 grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: systemPowerStatus

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:kennt jemand die nChange-Rückgabewerte des o. g. Slots?
nicht der Parameter nChange sondern die Method hat einen Rückgabewerte :
XPP_POWERQUERY_GRANT *) Erlaubnis zum Wechseln in den Ruhezustand erteilen
XPP_POWERQUERY_DENY **) Erlaubnis zum Wechseln in den Ruhezustand verweigern
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: systemPowerStatus

Beitrag von Werner_Bayern »

Servus Jimmy,

nein, ich meinte schon den Slot:
Slot: :systemPowerStatus := {| nChange, uNIL, self | ... } --> nResponse
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: systemPowerStatus

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:nein, ich meinte schon den Slot:
Slot: :systemPowerStatus := {| nChange, uNIL, self | ... } --> nResponse
ich ich das "Ergebniss" nResponse.
er gibt IMHO nur 1 oder 0x424D5144 zurück
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: systemPowerStatus

Beitrag von Werner_Bayern »

Ich möchte aber bevor ich entsprechend reagieren muss wissen, auf was ich reagieren soll! Das steht in nChange.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: systemPowerStatus

Beitrag von AUGE_OHR »

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
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: systemPowerStatus

Beitrag von brandelh »

Hier ist die zugehörige MSDN Seite ... grundsätzlich müsste das bei jedem PC funktionieren, ob die Werte aber sinnvoll sind ?

http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: systemPowerStatus

Beitrag von Werner_Bayern »

Servus,

Danke für die Hinweise, die kannte ich schon beide. SystemPowerStatus betrifft nicht den Zustand des Akkus, sondern den Energiezustand des PCs:
Aufforderung zum Wechsel Das System benötigt die Erlaubnis in den Ruhezustand zu wechseln. <nChange> enthält 0 oder 1.

Wechsel in den Ruhezustand Der Computer ist dabei, in den Ruhezustand zu wechseln. <nChange> enthält 4 oder 5.

Wechsel aus Ruhezustand Der Computer wird nach Ruhezustand wieder ausgeführt. <nChange> enthält 6, 7 or 18.
Mich interessieren die anderen Werte für nChange, die, die hier nicht aufgeführt sind. Ich hatte definitiv auf einem Kunden-PC andere Werte als die hier aufgeführten. Welche, kann ich noch nicht sagen.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: systemPowerStatus

Beitrag von brandelh »

Offensichtlich weißt du mehr als wir ;-)
Eventuell sind die erhaltenen Werte auch Summen von gesetzten Bytes (also abfrage mit bAnd() ...)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: systemPowerStatus

Beitrag von AUGE_OHR »

Werner_Bayern hat geschrieben:SystemPowerStatus betrifft nicht den Zustand des Akkus, sondern den Energiezustand des PCs:
Aufforderung zum Wechsel Das System benötigt die Erlaubnis in den Ruhezustand zu wechseln. <nChange> enthält 0 oder 1.

Wechsel in den Ruhezustand Der Computer ist dabei, in den Ruhezustand zu wechseln. <nChange> enthält 4 oder 5.

Wechsel aus Ruhezustand Der Computer wird nach Ruhezustand wieder ausgeführt. <nChange> enthält 6, 7 or 18.
es geht um die SYSTEM_POWER_STATUS Structure die IMHO von Interesse ist wenn man "den Deckel zu" macht. Dazu gehören auch die Battery Functionen.

genau gesagt geht es um die WM_POWERBROADCAST Message die du mit BROADCAST_QUERY_DENY*** "abfangen" (cancel) kannst.
***( XPP_POWERQUERY_DENY = 0x424D5144 )
die Parameter findest du unter http://msdn.microsoft.com/en-us/library/aa373247.aspx
gruss by OHR
Jimmy
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2121
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 30 Mal
Danksagung erhalten: 72 Mal

Re: systemPowerStatus

Beitrag von Werner_Bayern »

Servus Jimmy,

danke, das dürften die fehlenden Codes sein.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: systemPowerStatus

Beitrag von AUGE_OHR »

hi,

kann das sein das o:systemPowerStatus (v1.9.355) zwar unter Win7/8/10 angesprochen wird aber ein XPP_POWERQUERY_DENY nicht mehr wie unter XP funktioniert ?
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: systemPowerStatus

Beitrag von brandelh »

M$ bringt alles fertig, ob es so ist musst du ausprobieren :wink:
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: systemPowerStatus

Beitrag von AUGE_OHR »

brandelh hat geschrieben:M$ bringt alles fertig, ob es so ist musst du ausprobieren :wink:
Tja ... habe das gefunden
https://msdn.microsoft.com/en-us/library/aa373247.aspx
Windows Server 2003 and Windows XP:
An application can return BROADCAST_QUERY_DENY to deny a PBT_APMQUERYSUSPEND or PBT_APMQUERYSUSPENDFAILED request.
...
To prevent the system from transitioning to a low-power state in Windows Vista, an application must call SetThreadExecutionState to inform the system that it is in use.
also geht das schon seit Vista NICHT mehr "so" [-X
... wann wurde o:systemPowerStatus eingeführt :angry4:
gruss by OHR
Jimmy
Antworten