PDA

Просмотр полной версии : Скрипт: Возврат из режима ожидания и переход в спящий режим


apka
31.12.2008, 18:54
После установки CarPC, очень стала надоедать долгая загрузка системы после непродолжительного отсутствия (< часа).
Так что после некоторых исследований был написан vb-скрипт, "уводящий" ПК в спящий(Hibernate) режим через полчаса(или любой др. промежуток времени) после того как система была оставлена в ждущем(Standby) режиме.

Для M2-ATX нужно выставить перемычки в режим отключения питания на CarPC через 2 часа после откл. ACC (можно и больше). На др. БП не знаю.

Инструкция:
1. Скачать и распаковать WOSB(Скачать тут! (http://www.dennisbabkin.com/php/download.php?what=WOSB)) в "C:\WakeupOnStandBy"
2. Создать в этой директории текстовый файл например autoHibernate.vbs и скопировать туда скрипт
3. Создать ярлык к этому файлу и прописать его в автозагрузку
4. Выставить действие по-умолчанию при нажатие кнопки Power - режим ожидания(Standby, Sleep)
5. Перезагрузить ПК

PS: Убедитесь, что у Вас активирован режим Hibernate.
Желающие могут добавить свои действия перед уходом в Hibernate.


wosbExe = "c:\WakeupOnStandBy\wosb.exe" ' Путь к wosb.exe
sleepTime = 30 ' Кол-во минут ожидания

Set oShell = CreateObject("WScript.Shell")
Set colMonitoredEvents = GetObject("winmgmts:").ExecNotificationQuery("Select * from Win32_PowerManagementEvent")

isHibernate = False
suspendTime = Now
resumeTime = Now

Do
Set objLatestEvent = colMonitoredEvents.NextEvent

Select Case objLatestEvent.EventType

Case 4
' Suspend
If Not isHibernate Then
suspendTime = Now
oShell.Run wosbExe & " /systray /run tm=+" & sleepTime & ":00", 0, False
End If

Case 7, 18
' 7 - Resume, 18 - Automatic Resume
resumeTime = Now
If Not isHibernate Then
diff = DateDiff("n", suspendTime, resumeTime)
If diff >= sleepTime And diff <= sleepTime * 2 Then
isHibernate = True
oShell.Run wosbExe & " /closeall", 0, False
oShell.Run "rundll32.exe powrprof.dll,SetSuspendState", 0, False
Else
isHibernate = False
oShell.Run wosbExe & " /closeall", 0, False
End If
Else
isHibernate = False
End If

End Select
Loop

Deemon
28.08.2009, 15:41
Полезный скрипт. Но на ЕЕЕ РС замечено,что правильно работает через раз. Скорее всего это глюки железа,но как знать. Пока пытаюсь понять.

Iquos
11.09.2009, 08:25
А зачем это все? WinXP у меня сама уходит в гибернейт после получаса нахождения в ждущем режиме. Настраивал все в настройках электропитания, в панели инструментов.. Зачем скрипт? :)

s.m.
11.09.2009, 13:16
А зачем это все? WinXP у меня сама уходит в гибернейт после получаса нахождения в ждущем режиме. Настраивал все в настройках электропитания, в панели инструментов.. Зачем скрипт? :)

И что, в винде можно выполнить что-то ПЕРЕД уходом в это состояние?
Вообще, ИМХО в винде XP он толком не работает. Несколько раз пробовал пользоваться - или виснет или выходит дольше холодного старта (при котором и так все нужное в автозагрузке)

Hamster
11.09.2009, 19:14
А зачем это все? WinXP у меня сама уходит в гибернейт после получаса нахождения в ждущем режиме. Настраивал все в настройках электропитания, в панели инструментов.. Зачем скрипт? :)

У тебя возможно ноут? На обычном компе настроить WINXP уходить в гибернейт после хх минут стендбая нельзя... :(

Но, скрипт действительно никчему - требуемые функции ужо есть в самой программе :)

Вот, в ФАКе ясно написано что нуна сделать: http://www.dennisbabkin.com/php/faq.php?what=wosb#14

zzmakszz
11.09.2009, 21:19
У тебя возможно ноут? На обычном компе настроить WINXP уходить в гибернейт после хх минут стендбая нельзя... :(


На обычном компе можно это всё сделать, только что попробовал и всё работает, сначало уходит в ждущий потом через хх минут включается системник перезаписывает данные из памяти на HDD и уходит в спящий режим. вечером попробую это сделать в машине

zzmakszz
11.09.2009, 21:22
вот скрин
http://i066.radikal.ru/0909/41/928edd10987ct.jpg (http://radikal.ru/F/i066.radikal.ru/0909/41/928edd10987c.jpg.html)

Hamster
11.09.2009, 21:44
На обычном компе можно это всё сделать, только что попробовал и всё работает, сначало уходит в ждущий потом через хх минут включается системник перезаписывает данные из памяти на HDD и уходит в спящий режим. вечером попробую это сделать в машине

СЕЕЕКУНДОЧКУ!
Так как ты настроил - не вопрос. НО! Нам нужно, чтобы комп уходил в ждущий не через некоторое время (как в твоем примере), а по Inginiton OFF. А вот потом, через время хх переходить в хибернейт. Чувствуешь разницу :) ?

zzmakszz
11.09.2009, 21:56
СЕЕЕКУНДОЧКУ!
Так как ты настроил - не вопрос. НО! Нам нужно, чтобы комп уходил в ждущий не через некоторое время (как в твоем примере), а по Inginiton OFF. А вот потом, через время хх переходить в хибернейт. Чувствуешь разницу :) ?

согласен, я понял вчём ошибка, щас попробую

zzmakszz
11.09.2009, 21:59
Ссори, ни чего не получается :no2:

Hamster
11.09.2009, 22:05
согласен, я понял вчём ошибка, щас попробую

Да я уж пробовал 100 раз. Проблема в том, что если в свойствах электропитания выставить для ждущего "никогда" а для хибернейта 20 мин, то комп в хиберней всегдя будет через 20 мин уходить, даже когда он работает...
Утилитка, короче, весьма полезная :) Я ее давно пользую. Кстати, по-моему она входит в дистриб RoadRunner.

murano
11.11.2009, 21:01
мне кажется что в четвертой строчке
= Set colMonitoredEvents = GetObject("winmgmts:").ExecNotificationQuery("Select * from Win32_PowerManagementEvent") =

скрипта ошибка. или я не прав?

Hamster
11.11.2009, 21:07
мне кажется что в четвертой строчке
= Set colMonitoredEvents = GetObject("winmgmts:").ExecNotificationQuery("Select * from Win32_PowerManagementEvent") =

скрипта ошибка. или я не прав?

Какая разница? Я ж писал - сам скрипт не нужен, утилиты достаточно, в ней все есть.

murano
11.11.2009, 21:30
Извините, не внимательно читал. Спасибо за дополнительный ответ.

murano
12.11.2009, 22:32
Здравствуйте! Может быть туплю, что-то не так делаю, но все это работает у меня только когда непосредственно запускаю bat-файл. Из RR просто переходит в режим по настройке перемычек на блоке питания (в "ExecTBL.ini" прописал строчку). Поясните пожалуйста как надо настроить питание на БП и в свойсвах "питание". Спасибо.

zamalatb
15.04.2010, 11:17
с Centrafuse 3.1 ктото настраивал? сделал все как в ФАКе, по игнитион в офф комп уходит в слип, потом через время в хибернейт. НО, когда включаю его после слипа он все равно уходит в хибернейт через это время...в Центрефуге есть опция выполнять скрипт при StandBY туда батник и добавил. В чем ошибка подскажите пожалуйста?

Еще вопрос что автор программы в факе имел ввиду под этим требованием?
Advanced Power Management (APM) in PC to be able to delay power-off for at least the time period required for system to stay in stand-by mode (20 minutes in this case). If this option is supported, set it to at least 30 minutes for this question;

zamalatb
16.04.2010, 12:29
решил проблему, после возврата из стендбая запускается батник с командой wosb.exe /closeall

Melnik
16.04.2010, 12:54
А как сдесать чтобу при выкл. зажигание комп уходил в ждущий, а через например мин.30-40 отключался полностью, т.к. у меня с "твердотелки" быстрее загружается полностью, чем выходит из спящего режима...

zamalatb
16.04.2010, 18:28
А как сдесать чтобу при выкл. зажигание комп уходил в ждущий, а через например мин.30-40 отключался полностью, т.к. у меня с "твердотелки" быстрее загружается полностью, чем выходит из спящего режима...

у меня тоже твердотелка н оне заметил что быстрее, винда может и быстро грузится а вот центрифуга...

ну в батнике вместо hybernetion напиши shutdown

Serxio
17.05.2010, 23:56
Поставил перемычку на m2-atx на отключение питания через 2 часа, с утилитой поступил как написано выше.
в файле sleep.bat прописал standby 10 минут, после этого hibernation.
Проверил, первый раз сработало.
Оставил машиу на несколько часов, вернулся, включаю зажигание и происходит загрузка Windows, а не возврат из сна.
Что сделал не так, у кого какие мысли? Может стоит перемычку на БП поставить таким образом, чтобы питание никогда не отрубалось?

Serxio
21.05.2010, 11:59
Сделал следующее:
перемычку поставил на m2 atx на Р8 (10минут ждущий режим- полное отрубание через час).
В файле sleep.bat указал ждущий режим через 5 минут, затем спящий.

Всё заработало нормально.

= Nicki =
12.09.2010, 11:17
Но, скрипт действительно никчему - требуемые функции ужо есть в самой программе :)

Вот, в ФАКе ясно написано что нуна сделать: http://www.dennisbabkin.com/php/faq.php?what=wosb#14

скрипт нужен для того чтобы не использовать фронт енд для этого. wosb или батник на его основе кто-то должен запустить - это и делает скрипт. Я использую RR DS (http://pccar.ru/showthread.php?t=10039), программа только развивается есть некоторые проблемы с отработкой событий при засыпании. Поэтому и обратился к скрипту. Скрипт из шапки у меня не заработал, поэтому немного "по испортив" исходный код получилось вот это:

wosbExe = "c:\WakeupOnStandBy\wosb.exe" ' Путь к wosb.exe
sTimeInsuspend = "15"

Set oShell = CreateObject("WScript.Shell")
Set colMonitoredEvents = GetObject("winmgmts:").ExecNotificationQuery("Select * from Win32_PowerManagementEvent")

Do
Set objLatestEvent = colMonitoredEvents.NextEvent
Select Case objLatestEvent.EventType
Case 4
'Suspend
oShell.Run wosbExe & " /systray /run time=+" & sTimeInsuspend & ":00 hibernatewait=0",0,False

Case 18
' 7 - Resume, 18 - Automatic Resume
oShell.Run wosbExe & " /closeall", 0, False
End Select
Loop

Делаем по инструкции из шапки, только вставляем код из этого поста. На ББ протестировал. Нажимаем кнопку Power на системнике - комп уходит в Ждущий режим, через 15 минут просыпается и уходит в Спящий режим. Думаю автор темы не будет против?

= Nicki =
13.09.2010, 14:49
Блин на ББ работает как часы, на писикаре не успевает отработать wosb.exe - не успевает инициализировать счетчик по которому проснется комп от ждущего режима =(

Как бы притормозить из скрипта на 3 секунды уход в ждущий режим?

Iquos
14.05.2011, 12:35
Написал с горя программульку, кому интересно, смотреть здесь (http://pccar.ru/showthread.php?t=15035) :)