home *** CD-ROM | disk | FTP | other *** search
- \ File: wakeup.spf
- \ Author: Nicholas Nemtsev
- \ Date: 11.10.2002
- \ Description: Waking up from suspend or hibernate mode (if your hardware support it)
- \ Usage: WakeAfter: hh:mm (hh:mm - relative time)
- \ WakeAt: hh:mm (hh:mm - absolute time)
- \ 2k/XP only
-
- Win2k?
- [IF]
- WINAPI: CreateWaitableTimerA KERNEL32.DLL
- WINAPI: SetWaitableTimer KERNEL32.DLL
- WINAPI: SleepEx KERNEL32.DLL
-
- : WaitableTimer ( -- h ior ) 0 0 0 CreateWaitableTimerA DUP ERR ;
-
- :NONAME { arg low hi -- }
- 0
- ; WNDPROC: APCWTimer
-
- : SetWTimer ( pd h -- ior )
- >R
- >R
- TRUE 0 ['] APCWTimer 0
- R>
- R> SetWaitableTimer ERR
- ;
-
- : WakeAfter { ms \ ht -- }
- WaitableTimer THROW TO ht
- ms 10000 UM* DNEGATE SWAP SP@ ht SetWTimer THROW 2DROP
- TRUE ms 10000 + SleepEx DROP
- ht CloseHandle DROP
- ;
-
- C" S>MS" FIND NIP 0=
- [IF]
- : S>MS ( a u -- u)
- 2DUP S" :" SEARCH NIP NIP
- IF SH:M>Min 60000 * ELSE S>NUM THEN ;
- [THEN]
-
- :NONAME S>MS WakeAfter ;
-
- : WakeAfter:
- eval-string,
- LITERAL COMPILE,
- ; IMMEDIATE
-
-
- :NONAME ( a u -- )
- SH:M>Min TimeMin@ -
- DUP 0< IF 1440 + THEN
- 60000 *
- WakeAfter
- ;
-
- : WakeAt:
- eval-string,
- LITERAL COMPILE,
- ; IMMEDIATE
-
- [THEN]
-