PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Оптимизация ОС (http://pccar.ru/forumdisplay.php?f=29)
-   -   Скрипт: Возврат из режима ожидания и переход в спящий режим (http://pccar.ru/showthread.php?t=7261)

apka 31.12.2008 18:54

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

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

Инструкция:
1. Скачать и распаковать 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

Цитата:

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

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

Hamster 11.09.2009 19:14

Цитата:

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

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

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

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

zzmakszz 11.09.2009 21:19

Цитата:

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

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

zzmakszz 11.09.2009 21:22

вот скрин
http://i066.radikal.ru/0909/41/928edd10987ct.jpg

Hamster 11.09.2009 21:44

Цитата:

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

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

zzmakszz 11.09.2009 21:56

Цитата:

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

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

zzmakszz 11.09.2009 21:59

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

Hamster 11.09.2009 22:05

Цитата:

Сообщение от zzmakszz (Сообщение 110545)
согласен, я понял вчём ошибка, щас попробую

Да я уж пробовал 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

Цитата:

Сообщение от murano (Сообщение 118547)
мне кажется что в четвертой строчке
= 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

Цитата:

Сообщение от Melnik (Сообщение 138754)
А как сдесать чтобу при выкл. зажигание комп уходил в ждущий, а через например мин.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

Цитата:

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

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

скрипт нужен для того чтобы не использовать фронт енд для этого. wosb или батник на его основе кто-то должен запустить - это и делает скрипт. Я использую RR DS, программа только развивается есть некоторые проблемы с отработкой событий при засыпании. Поэтому и обратился к скрипту. Скрипт из шапки у меня не заработал, поэтому немного "по испортив" исходный код получилось вот это:
Код:

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

Написал с горя программульку, кому интересно, смотреть здесь :)


Часовой пояс GMT +4, время: 05:06.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot