Показать сообщение отдельно
Старый 31.12.2008, 18:54   #1
apka
Новый Пользователь
 
Регистрация: 31.12.2008
Возраст: 39
Регион: Казахстан
Сообщений: 1
apka is on a distinguished road
По умолчанию Скрипт: Возврат из режима ожидания и переход в спящий режим

После установки 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

Последний раз редактировалось apka; 31.12.2008 в 20:59. Причина: Добавил инструкцию
apka вне форума   Ответить с цитированием