Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Автоматическое включение компьютера


Автор: Mr.Floppy 16.9.2006, 11:37
Практически во всех компьютерах (ATX) в BIOS Setup есть опция автоматического включения в определенное время. Можно ли его задавать из Windows?

Автор: SparF 16.9.2006, 14:15
Под Linux это делается не очень сложно, ресурсов в сети много (к примеру: http://www.malloc.de/tools/wakeup_clock.html ), все упирается только в особенности конкретного железа. По поводу win - в msdn я ничего толкового не нашел ( с другой стороны, каюсь, не особо и искал). Однажды на глаза попалась прога (под винды), которая "обещала включить комп" когда я "скажу"....но прозвизделась  smile  - в плане не работала.....
Но это 100% возможно, и вот эта штука тому подтверждение:
http://www.shareit.com/programs.html?productid=185568&language=English

А вот тут можно почитать близко  к теме:
http://www.dennisbabkin.com/php/faq.php?what=wosb
http://www.acpi.info/

Автор: Mr.Floppy 23.9.2006, 05:44
Выдрал из nnCron'а:
Код

\ 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]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)