home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 July / CHIP_CD_2004-07.iso / software / nncron_hit / files / nncron189.exe / plugins / wakeup.spf < prev    next >
Text File  |  2003-06-26  |  1KB  |  64 lines

  1. \ File:         wakeup.spf
  2. \ Author:       Nicholas Nemtsev
  3. \ Date:         11.10.2002
  4. \ Description:  Waking up from suspend or hibernate mode (if your hardware support it)
  5. \ Usage:   WakeAfter: hh:mm      (hh:mm - relative time)
  6. \          WakeAt: hh:mm         (hh:mm - absolute time)
  7. \ 2k/XP only
  8.  
  9. Win2k?
  10. [IF]
  11. WINAPI: CreateWaitableTimerA KERNEL32.DLL
  12. WINAPI: SetWaitableTimer KERNEL32.DLL
  13. WINAPI: SleepEx KERNEL32.DLL
  14.  
  15. : WaitableTimer ( -- h ior ) 0 0 0 CreateWaitableTimerA DUP ERR ;
  16.  
  17. :NONAME { arg low hi -- }
  18. 0
  19. ; WNDPROC: APCWTimer
  20.  
  21. : SetWTimer ( pd h -- ior )
  22.     >R
  23.     >R
  24.     TRUE 0 ['] APCWTimer 0
  25.     R> 
  26.     R> SetWaitableTimer ERR
  27. ;
  28.  
  29. : WakeAfter { ms \ ht -- }
  30.     WaitableTimer THROW TO ht
  31.     ms 10000 UM* DNEGATE SWAP SP@ ht SetWTimer THROW 2DROP
  32.     TRUE ms 10000 + SleepEx DROP
  33.     ht CloseHandle DROP
  34. ;
  35.  
  36. C" S>MS" FIND NIP 0=
  37. [IF]
  38. : S>MS ( a u -- u)
  39.     2DUP S" :" SEARCH NIP NIP
  40.     IF SH:M>Min 60000 * ELSE S>NUM THEN ;
  41. [THEN]
  42.  
  43. :NONAME S>MS WakeAfter ;
  44.  
  45. : WakeAfter: 
  46.     eval-string,
  47.     LITERAL COMPILE,
  48. ; IMMEDIATE
  49.  
  50.  
  51. :NONAME ( a u -- )
  52.     SH:M>Min TimeMin@ -
  53.     DUP 0< IF 1440 + THEN
  54.     60000 *
  55.     WakeAfter
  56. ;
  57.  
  58. : WakeAt:
  59.     eval-string,
  60.     LITERAL COMPILE,
  61. ; IMMEDIATE
  62.  
  63. [THEN]
  64.