System-Sleep verhindern
Verfasst: 04.09.2007 17:40
nach nem Tip von milan hab ich mal ausgefutzelt, wie das funktioniert,
ein aktivieren des bildschirmschoners und der energiesparoptionen zu verhindern.
der code benutzt einen aufruf in der kernel32 lib.
laut MSDN ist minimum win2Kpro.
mit den requester-aufrufen innerhalb der proc ist das natürlich eher ne demo.
vielleicht ist ja es für jemanden nützlich.
ein aktivieren des bildschirmschoners und der energiesparoptionen zu verhindern.
der code benutzt einen aufruf in der kernel32 lib.
laut MSDN ist minimum win2Kpro.
mit den requester-aufrufen innerhalb der proc ist das natürlich eher ne demo.
vielleicht ist ja es für jemanden nützlich.
Code: Alles auswählen
;****************************************************************************************
;*** prevent sleep-mode
;****************************************************************************************
#ES_CONTINUOUS = $80000000
#ES_DISPLAY_REQUIRED = $00000002
#ES_SYSTEM_REQUIRED = $00000001
Procedure STES_Set( Flag.l )
If OpenLibrary(0, "kernel32")
ret = CallFunction(0, "SetThreadExecutionState", Flag )
If ret = 0
MessageRequester( "Error", "Lib call Failed" )
EndIf
CloseLibrary(0)
Else
MessageRequester( "Error", "Lib open Failed" )
EndIf
EndProcedure
;****************************************************************************************
; activate
STES_Set( #ES_CONTINUOUS | #ES_SYSTEM_REQUIRED | #ES_DISPLAY_REQUIRED )
; the rest is only to demonstrate it works
OpenWindow(0, #PB_Ignore, #PB_Ignore, 140, 60, "Keep Awake")
CreateGadgetList(WindowID(0))
TextGadget(0, 20, 20, 100, 20, "0000 sec", #PB_Text_Center | #PB_Text_Border )
timerstart = ElapsedMilliseconds()
Repeat
EvID = WaitWindowEvent(500)
Select EvID
Case #Null
timer = ( ElapsedMilliseconds() - timerstart ) / 1000
SetGadgetText(0, RSet(Str(timer),4,"0") + " sec" )
Case #PB_Event_CloseWindow
EXIT = 1
EndSelect
Until EXIT
; reset executionstate at the and of the program
STES_Set( #ES_CONTINUOUS )