Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Возможноли автоматическое включение ПК через скрипт?

Ответить
Настройки темы
Возможноли автоматическое включение ПК через скрипт?

Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


Можно ли сделать так чтобы скрипт запрограммировал компьютер на включение, если нет, то я слышал что можно через скрипт вывести компьютер из спящего режима так как это можно сделать или

Отправлено: 00:27, 02-11-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Anarasius:
Можно ли сделать так чтобы скрипт запрограммировал компьютер на включение »
Интересно, а скрипт будет запущен виртуально?

Цитата Anarasius:
можно через скрипт вывести компьютер из спящего режима »
Вроде можно:

Код: Выделить весь код
#include <Date.au3>

SetWakeUpTime(@HOUR, @MIN + 2) ;wakeup the system in 2 minutes from now
SetSuspend() ;go to hibernate mode

;===============================================================================
;
; Description:    Set the computer in Hibernate or Standby Status
; Parameter(s):  $Mode  - Suspend mode  : True=Hibernate, False=Suspend
;                   $Force  - Force-Mode    : True=the system suspends operation immediately
;                                             False=FALSE, the system broadcasts a PBT_APMQUERYSUSPEND event to each application to request permission to suspend operation
;
; Requirement(s):   DllCall
;
; Author(s):        Bastel123 aka Sebastian
; Note(s):        If the system does not support hibernate use the standby mode       -
;
;===============================================================================
Func SetSuspend($mode = True, $force = True)
    $result = DllCall("PowrProf.dll", "long", "SetSuspendState", "long", $mode, "long", $force, "long", False)
EndFunc   ;==>SetSuspend

;===============================================================================
;
; Description:    Sets a wakeup time to wake it up if the system / computer is hibernating or standby
; Parameter(s):  $Hour  - Hour Values   : 0-23
;                   $Minute - Minutes Values: 0-59
;                   $Day    - Days Values   : 1-31  (optional)
;                  $Month   - Month Values  : 1-12  (optional)
;                  $Year    - Year Values   : > 0   (optional)
;
; Requirement(s):   DllCall
; Return Value(s):  On Success - 1
;                  On Failure - 0 sets @ERROR = 1 and @EXTENDED (Windows API error code)
;
; Error code(s):    http://msdn.microsoft.com/library/default....error_codes.asp
;
; Author(s):        Bastel123 aka Sebastian
; Note(s):        -
;
;===============================================================================
Func SetWakeUpTime($Hour, $Minute, $Day = @MDAY, $Month = @MON, $Year = @YEAR)
    $SYSTEMTIME = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    $lpSYSTEMTIME = DllStructGetPtr($SYSTEMTIME)
    $LOCALFILETIME = DllStructCreate("dword;dword")
    $lpLOCALFILETIME = DllStructGetPtr($LOCALFILETIME)
    $DueTime = DllStructCreate("dword;dword")
    $lpDueTime = DllStructGetPtr($DueTime)

    DllStructSetData($SYSTEMTIME, 1, $Year)
    DllStructSetData($SYSTEMTIME, 2, $Month)
    DllStructSetData($SYSTEMTIME, 3, _DateToDayOfWeek($Year, $Month, $Day) - 1)
    DllStructSetData($SYSTEMTIME, 4, $Day)
    DllStructSetData($SYSTEMTIME, 5, $Hour)
    DllStructSetData($SYSTEMTIME, 6, $Minute)
    DllStructSetData($SYSTEMTIME, 7, 0)
    DllStructSetData($SYSTEMTIME, 8, 0)

    $result = DllCall("kernel32.dll", "long", "SystemTimeToFileTime", "ptr", $lpSYSTEMTIME, "ptr", $lpLOCALFILETIME)

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    $result = DllCall("kernel32.dll", "long", "LocalFileTimeToFileTime", "ptr", $lpLOCALFILETIME, "ptr", $lpLOCALFILETIME)

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    $result = DllCall("kernel32.dll", "long", "CreateWaitableTimer", "long", 0, "long", True, "str", "")

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    DllCall("kernel32.dll", "none", "CancelWaitableTimer", "long", $result[0])

    DllStructSetData($DueTime, 1, DllStructGetData($LOCALFILETIME, 1))
    DllStructSetData($DueTime, 2, DllStructGetData($LOCALFILETIME, 2))

    $result = DllCall("kernel32.dll", "long", "SetWaitableTimer", "long", $result[0], "ptr", $lpDueTime, _
        "long", 1000, "long", 0, "long", 0, "long", True)

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    Return 1
EndFunc   ;==>SetWakeUpTime
Источник

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:22, 02-11-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 54
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не совсем я там разобрался мне надо что бы ПК каждый день уходил в спящий режим в 22.55 а включался в 9.55

Отправлено: 12:13, 02-11-2009 | #3


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Примерно так. Но Creat0R если что поправит
Код: Выделить весь код
#include <Date.au3>

While 1; цикл для проверки времени
    If @HOUR = 22 AND @MIN = 55 Then; если время нужное, то...
        $sFuture = _DateAdd('D', 1, _NowCalcDate()); вычислить завтрашнюю дату
        $aFuture = StringSplit($sFuture, '/'); найти день/меся/год
        SetWakeUpTime(9, 55, $aFuture[3], $aFuture[2], $aFuture[1]); задать время для выхода из спящего режима
        SetSuspend() ;уйти в спящий режим
    Else
        Sleep(100)
    EndIf
WEnd

;===============================================================================
;
; Description:    Set the computer in Hibernate or Standby Status
; Parameter(s):  $Mode  - Suspend mode  : True=Hibernate, False=Suspend
;                   $Force  - Force-Mode    : True=the system suspends operation immediately
;                                             False=FALSE, the system broadcasts a PBT_APMQUERYSUSPEND event to each application to request permission to suspend operation
;
; Requirement(s):   DllCall
;
; Author(s):        Bastel123 aka Sebastian
; Note(s):        If the system does not support hibernate use the standby mode       -
;
;===============================================================================
Func SetSuspend($mode = True, $force = True)
    $result = DllCall("PowrProf.dll", "long", "SetSuspendState", "long", $mode, "long", $force, "long", False)
EndFunc   ;==>SetSuspend

;===============================================================================
;
; Description:    Sets a wakeup time to wake it up if the system / computer is hibernating or standby
; Parameter(s):  $Hour  - Hour Values   : 0-23
;                   $Minute - Minutes Values: 0-59
;                   $Day    - Days Values   : 1-31  (optional)
;                  $Month   - Month Values  : 1-12  (optional)
;                  $Year    - Year Values   : > 0   (optional)
;
; Requirement(s):   DllCall
; Return Value(s):  On Success - 1
;                  On Failure - 0 sets @ERROR = 1 and @EXTENDED (Windows API error code)
;
; Error code(s):    http://msdn.microsoft.com/library/default....error_codes.asp
;
; Author(s):        Bastel123 aka Sebastian
; Note(s):        -
;
;===============================================================================
Func SetWakeUpTime($Hour, $Minute, $Day = @MDAY, $Month = @MON, $Year = @YEAR)
    $SYSTEMTIME = DllStructCreate("ushort;ushort;ushort;ushort;ushort;ushort;ushort;ushort")
    $lpSYSTEMTIME = DllStructGetPtr($SYSTEMTIME)
    $LOCALFILETIME = DllStructCreate("dword;dword")
    $lpLOCALFILETIME = DllStructGetPtr($LOCALFILETIME)
    $DueTime = DllStructCreate("dword;dword")
    $lpDueTime = DllStructGetPtr($DueTime)

    DllStructSetData($SYSTEMTIME, 1, $Year)
    DllStructSetData($SYSTEMTIME, 2, $Month)
    DllStructSetData($SYSTEMTIME, 3, _DateToDayOfWeek($Year, $Month, $Day) - 1)
    DllStructSetData($SYSTEMTIME, 4, $Day)
    DllStructSetData($SYSTEMTIME, 5, $Hour)
    DllStructSetData($SYSTEMTIME, 6, $Minute)
    DllStructSetData($SYSTEMTIME, 7, 0)
    DllStructSetData($SYSTEMTIME, 8, 0)

    $result = DllCall("kernel32.dll", "long", "SystemTimeToFileTime", "ptr", $lpSYSTEMTIME, "ptr", $lpLOCALFILETIME)

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    $result = DllCall("kernel32.dll", "long", "LocalFileTimeToFileTime", "ptr", $lpLOCALFILETIME, "ptr", $lpLOCALFILETIME)

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    $result = DllCall("kernel32.dll", "long", "CreateWaitableTimer", "long", 0, "long", True, "str", "")

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    DllCall("kernel32.dll", "none", "CancelWaitableTimer", "long", $result[0])

    DllStructSetData($DueTime, 1, DllStructGetData($LOCALFILETIME, 1))
    DllStructSetData($DueTime, 2, DllStructGetData($LOCALFILETIME, 2))

    $result = DllCall("kernel32.dll", "long", "SetWaitableTimer", "long", $result[0], "ptr", $lpDueTime, _
        "long", 1000, "long", 0, "long", 0, "long", True)

    If $result[0] = 0 Then
        Local $lastError = DllCall("kernel32.dll", "int", "GetLastError")
        Return SetError(1, $lastError[0], 0)
    EndIf

    Return 1
EndFunc   ;==>SetWakeUpTime

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 13:04, 02-11-2009 | #4


Пользователь


Сообщения: 82
Благодарности: 8

Профиль | Отправить PM | Цитировать


Creat0R, kaster, можете сделать похожий скрипт, чтобы комп уходил в ждущий режим а не в спящий?
Спасибо.

Отправлено: 16:04, 05-11-2009 | #5


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Могу только предположить, что надо вызвать функцию SetSuspend с первым параметром False. Попробуй
Код: Выделить весь код
SetSuspend(False)

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:28, 05-11-2009 | #6


Пользователь


Сообщения: 82
Благодарности: 8

Профиль | Отправить PM | Цитировать


Попробовал, уходит действительно в ждущий режим. Но не выходит из него сам, включал комп вручную.
Пробовал потом менять оба параметра, т.е. так Func SetSuspend($mode = False, $force = False)
Тоже уходит в ждущий и не выходит из него. Второй параметр поменял наугад, думал что это поможет

После вывода из ждущего режима у меня почемуто глючит интернет. Модем не устанавливает соединение
Если у кого-то будет тоже повторятся глюк, то нужно просто перезагрузить комп.

Отправлено: 20:09, 05-11-2009 | #7


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Где-то писали, что для корректного ухода в ждущий режим, необходимо чтобы Hibernate был отключен в опциях электропитания. Может поможет

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 21:12, 05-11-2009 | #8


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


А как "по-правильному запустить некий файл, обычный или музыкальный при описанном в этой теме выходе из спящего режима? Имеется ввиду не функция типа:SoundPlay(), а место в скрипте, где эту функцию притулить? Ибо мне приходит на ум, только сделать проверку в цикле на сравнение, если счас на 1 минуту больше чем время выхода из спящего режима, которое задано было в функции SetWakeUpTime(), то SoundPlay()?

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 00:34, 06-11-2009 | #9


Пользователь


Сообщения: 82
Благодарности: 8

Профиль | Отправить PM | Цитировать


Запустил скрипт, только время поставил свое. Решил попробовать спящий режим потому что из ждущего он не выходит сам.
Комп ушел в спящий режим и в назначенное время запустился, но вместо загрузки он выдал BSOD.
О чем говорилось на экране я непонял, все на англ конечно. Сделал скрины мобилкой, и для удобочитаемости сделал скрины черно-белыми.
Это у меня с ноутом ерунда какая-то, или у вас тоже так?

Ниже сами скрины и код скрипта который пробовал.




потом еще


скрипт Sleep.au3
Вроде все нормально, или время ноль часов нужно с двумя нолями указывать? Я поставил один ноль...
Код: Выделить весь код
#include <Date.au3>

While 1; цикл для проверки времени
    If @HOUR = 23 AND @MIN = 55 Then; если время нужное, то...
        $sFuture = _DateAdd('D', 1, _NowCalcDate()); вычислить завтрашнюю дату
        $aFuture = StringSplit($sFuture, '/'); найти день/меся/год
        SetWakeUpTime(0, 05, $aFuture[3], $aFuture[2], $aFuture[1]); задать время для выхода из спящего режима
        SetSuspend() ;уйти в спящий режим
    Else
        Sleep(100)
    EndIf
WEnd

;
kaster, спасибо. В управлении у меня отключены спящий и ждущий режимы. На вкладке спящего режима галка есть, разрешить использование спящего режима.

Отправлено: 02:08, 06-11-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Возможноли автоматическое включение ПК через скрипт?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Возможноли управлять WinRAR через Autoit? Anarasius AutoIt 1 17-11-2009 14:28
БП и ИБП - автоматическое включение atx Trinux Прочее железо 3 21-07-2009 10:43
Загрузка - [решено] автоматическое включение-выключение компьютера lud Microsoft Windows 2000/XP 5 04-07-2009 14:30
Включение ПК через клавиатуру borison Хочу все знать 10 24-06-2009 09:46
[решено] Отключение дисплея или перевод в СПЯЩИЙ РЕЖИМ через через скрипт sashadeg AutoIt 4 30-05-2009 13:06




 
Переход