|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Возможноли автоматическое включение ПК через скрипт? |
|
|
Возможноли автоматическое включение ПК через скрипт?
|
Пользователь Сообщения: 54 |
Можно ли сделать так чтобы скрипт запрограммировал компьютер на включение, если нет, то я слышал что можно через скрипт вывести компьютер из спящего режима так как это можно сделать или
|
|
Отправлено: 00:27, 02-11-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить 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 |
||
------- Отправлено: 02:22, 02-11-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Не совсем я там разобрался мне надо что бы ПК каждый день уходил в спящий режим в 22.55 а включался в 9.55
|
Отправлено: 12:13, 02-11-2009 | #3 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить 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 |
------- Отправлено: 13:04, 02-11-2009 | #4 |
Пользователь Сообщения: 82
|
Профиль | Отправить PM | Цитировать Creat0R, kaster, можете сделать похожий скрипт, чтобы комп уходил в ждущий режим а не в спящий?
Спасибо. |
|
Отправлено: 16:04, 05-11-2009 | #5 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 16:28, 05-11-2009 | #6 |
Пользователь Сообщения: 82
|
Профиль | Отправить PM | Цитировать Попробовал, уходит действительно в ждущий режим. Но не выходит из него сам, включал комп вручную.
Пробовал потом менять оба параметра, т.е. так Func SetSuspend($mode = False, $force = False) Тоже уходит в ждущий и не выходит из него. Второй параметр поменял наугад, думал что это поможет ![]() После вывода из ждущего режима у меня почемуто глючит интернет. Модем не устанавливает соединение ![]() Если у кого-то будет тоже повторятся глюк, то нужно просто перезагрузить комп. |
Отправлено: 20:09, 05-11-2009 | #7 |
![]() Старожил Сообщения: 367
|
Профиль | Отправить PM | Цитировать Где-то писали, что для корректного ухода в ждущий режим, необходимо чтобы Hibernate был отключен в опциях электропитания. Может поможет
|
------- Отправлено: 21:12, 05-11-2009 | #8 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать А как "по-правильному запустить некий файл, обычный или музыкальный при описанном в этой теме выходе из спящего режима? Имеется ввиду не функция типа:SoundPlay(), а место в скрипте, где эту функцию притулить? Ибо мне приходит на ум, только сделать проверку в цикле на сравнение, если счас на 1 минуту больше чем время выхода из спящего режима, которое задано было в функции SetWakeUpTime(), то SoundPlay()?
|
------- Отправлено: 00:34, 06-11-2009 | #9 |
Пользователь Сообщения: 82
|
Профиль | Отправить 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 ; |
Отправлено: 02:08, 06-11-2009 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Возможноли управлять 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 |
|