Seite 2 von 2

Verfasst: 15.10.2008 17:59
von Kaeru Gaman
also, mit Ems funzt das auch, habs extra mal getestet, hiermit:

Code: Alles auswählen

EnableExplicit
Define EvID
Define GdID
Define EXIT
Define Timer
Define Counter
Define Disptext$

#PB_Event_NONE = 0

#Window = 0
#Button = 0
#TextGd = 1

OpenWindow( #Window, #PB_Ignore, #PB_Ignore, 256, 192, "Standby Test")
CreateGadgetList( WindowID(#Window))
  ButtonGadget(#Button, 32, 112, 192, 48, "Show Ems")
  TextGadget( #TextGd, 32,32, 192, 48, "Ems", #PB_Text_Center | #PB_Text_Border )

Timer = ElapsedMilliseconds()
Counter = 0

Repeat
  EvID = WaitWindowEvent( 100 )
  GdID = EventGadget()

  Select EvID
    Case #PB_Event_Gadget
      Select GdID
        Case #Button
          Disptext$ = "Ems: " + StrF(( ElapsedMilliseconds() - Timer ) / 1000, 3) + #CRLF$
          Disptext$ + "Counter: " + Str( Counter )
          SetGadgetText( #TextGd, Disptext$ )
      EndSelect
    Case #PB_Event_NONE
      Counter +1
    Case #PB_Event_CloseWindow
      EXIT = 1
  EndSelect

Until EXIT
auch im standby stoppt das programm aber die Uhr läuft weiter.

die beiden werte kann man auch dementsprechend vergleichen, um den standby festzustellen.
dürfte btw für den Hibernate / Sleep genauso funktionieren.


> Ich meinte eigentlich den Punkt im Herunterfahren-Menü.
ach, da ist das auch nochmal....
> Das mit den Energieoptionen ist wieder was anderes.
das kannst du aber auch mit timer automatisch aufrufen lassen, in den Energiesparoptionen einstellbar.

> wie soll man denn bei dem Schmarrn ne DVD anschauen können
mit unterschiedlichen profilen!
ich habe im profil "Desktop" eingestellt, dass man Monitor nach 1 oder 2 min ausgeht.
das ist praktisch, denn wenn ich daddel halte ich kaum 2min die finger still.
und das profil "Präsentation" schaltet niemals irgendetwas aus, das ist zum film gucken.
und umschalten kann ich das im systray, einfach rechtsclick auf das steckersymbol... ;)

Verfasst: 15.10.2008 18:38
von Fluid Byte
Mit diesem Code kannst du festellen wann der StandyBy Modus anfängt und wieder beendet wird.

Code: Alles auswählen

#PBT_APMRESUMESUSPEND = $0007	; Operation resuming after suspension. 
#PBT_APMSUSPEND = $0004			; System is suspending operation.

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
	Select uMsg
		Case #WM_POWERBROADCAST
		Select wParam
			Case #PBT_APMSUSPEND
			Debug "ENTERING STANDBY MODE!"

			Case #PBT_APMRESUMESUSPEND
			Debug "SYSTEM RESUMED FROM STANDBY!"			
		EndSelect
	EndSelect
	
	ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

SetWindowCallback(@WindowCallback())

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend

Verfasst: 15.10.2008 20:15
von Kaeru Gaman
ah... da ist die korrekte API-Lösung. :mrgreen:

... dachte ich mir doch, dass es da was geben muss, hatte aber keinen Bock, im Trüben zu fischen ...

Verfasst: 15.10.2008 20:23
von ts-soft
Naja, man kann nicht feststellen ob StandBy, nur ob der PC in einen niedrigeren
Batterielevel geschaltet wurde :mrgreen:
Dies könnte auch Ruhezustand bzw. Energiesparen (Vista) sein.

Verfasst: 15.10.2008 20:23
von AND51
Kaeru Gaman hat geschrieben:also, mit Ems funzt das auch, habs extra mal getestet
Hätte gedacht, dass dem nicht so ist, denn während der PC ja im StandBy-Modus ist, läuft er ja nicht.
ElapsedMilliseconds() liefert aber die Anzahl Millisekunden, die der PC schon läuft, dürfte doch (logisch betrachtet) nicht nach der Differenzmethode arbeiten, oder?

Differenzmethode = AktuellerZeitpöunkt — ZeitpunktDesStarts

Verfasst: 15.10.2008 20:38
von Kaeru Gaman
Ems liefert zwar die ms seit einschalten, wird aber trotzdem von der internen Uhr gesteuert.

... ich hab grad mal auf der MSDN gesucht, aber da steht man ja auf verlorenem Posten ...
37 Artikel über irgendwas, wo GetTickCount drin vorkommt,
aber nach der wirklichen Funktionsbeschreibung sucht man sich nen Wolf.

Verfasst: 18.10.2008 11:35
von Ractur
Bild@ALL [Ich habe es nun mit dem "Date-Trick" umgesetzt, funktioniert perfekt! ->THX AND]