![]()  | 
	
		
			
  | 
	|||||||
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | 
| 		
			
			 | 
		#1 | 
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 25.04.2011 
				
				Возраст: 47 
				
Регион: 31 
					Сообщений: 36
				 
				
				![]()  | 
	
	
	
	
		
			
			 Долго искал и не нашел. Задача у меня такая. Нужно чтобы ноутбук засыпал при переключении на питание от батареи через 60 секунд и перед сном нажимал стоп, Send, {Media_Stop}. Потом через 5 минут просыпался и уходил в гибернацию. В самой винде7 есть такая возможность, но если запущена навигация или какая еще программа, которую виндовс7 расценивает как мультимедийную, то у ноутбука бессонница. Есть куски скриптов которые следят за состоянием питания, отправляют в сон и гибернацию, но нехватает куска который бы пробудил компьютер из режима сна через заданное время. Пробовал усыплять ноут первыми двумя кусками, но в гибернацию он сам не уходит. Помогите собрать скрипт из этих кусков и дописать недостающий. Ещё как вариант можно программно создавать задачу в планировщике, но как это сделать не нашел. 
		
	
		
		
		
		
		
	
	Код: 
	кусок слежения за состоянием питания ноута
#SingleInstance force	; перезагрузить скрипт, если он уже запущен
#NoEnv	 ; запрещаем имена переменных как у переменных окружения
SendMode Input	 ; ускорренный ввод
#Persistent	 ; держать скрипт запущенным
SetTitleMatchMode 2	; 2 - заголовок окна должен содержать значение, заданное в WinTitle 
DetectHiddenWindows, On
SetTimer, GetPowerSource, 5000 
return ; End of main program 
GetPowerSource: 
VarSetCapacity(powerStatus, 1+1+1+1+4+4) 
success := DllCall("GetSystemPowerStatus", "UInt", &powerStatus) 
acLineStatus:=ReadInteger(&powerstatus,0,1,false) 
batteryFlag:=ReadInteger(&powerstatus,1,1,false) 
batteryLifeTime:=ReadInteger(&powerstatus,4,4,fals e) 
batteryFullLifeTime:=ReadInteger(&powerstatus,8,4, false) 
output=AC Status: %acLineStatus%`nBattery Flag: %batteryFlag%`nBattery Life (percent): %batteryLifePercent%`nBattery Life (time): %batteryLifeTime%`nBattery Life (full time): %batteryFullLifeTime% 
If %acLineStatus% = 0 
{ 
sleep 10000
VarSetCapacity(powerStatus, 1+1+1+1+4+4) 
success := DllCall("GetSystemPowerStatus", "UInt", &powerStatus)
acLineStatus:=ReadInteger(&powerstatus,0,1,false)
If %acLineStatus% = 0
{
Send, {Media_Stop}
ExitApp 
}
else
Return
} 
else
Return
ReadInteger( p_address, p_offset, p_size, p_hex=true ) 
{ 
value = 0 
old_FormatInteger := a_FormatInteger 
if ( p_hex ) 
SetFormat, integer, hex 
else 
SetFormat, integer, dec 
loop, %p_size% 
value := value+( *( ( p_address+p_offset )+( a_Index-1 ) ) << ( 8* ( a_Index-1 ) ) ) 
SetFormat, integer, %old_FormatInteger% 
return, value 
}
кусок отправки в режим сна
Suspend: 
Gui, Submit, NoHide 
if force 
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 1, "int", 0) 
else 
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0) 
Return 
кусок отправки в режим гибернации
Hibernate: 
Gui, Submit, NoHide 
if force 
DllCall("PowrProf\SetSuspendState", "int", 1, "int", 1, "int", 0) 
else 
DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0) 
Return
 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 25.04.2011 
				
				Возраст: 47 
				
Регион: 31 
					Сообщений: 36
				 
				
				![]()  | 
	
	
	
	
		
			
			 Есть мысль, но пока как сделать не знаю. Нужно программно включать и выключать задачу в планировщике. То есть. Скрипт перед тем как отправит комп спать, включает задачу, в которой прописанно например запустить скрипт  который отправит комп в гибернацию, а для этого нужно разбудить комп. Не получается запустить задачу перед сном и соответственно выключить перед гибернацией. Есть какие мысли, или другие варианты? 
		
	
		
		
		
		
		
	
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#3 | |
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 22.10.2010 
				
				Возраст: 46 
				
Город: Москва 
Регион: 77, 97, 99, 177 
Машина: Toyota Camry v40 
					Сообщений: 33
				 
				
				![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 http://www.compcar.ru/forum/showthread.php?t=7484 Единственное там осуществяется переход по нажатию кнопки питания (физически, не программно)   Но в принципе могу изменить событие на смену источника питания ![]() 
				__________________ 
		
		
		
		
	
	Комп в тачке: ![]() Установка: [######80%####__] Настройка: [#####_60%_______]  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#4 | |
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 25.04.2011 
				
				Возраст: 47 
				
Регион: 31 
					Сообщений: 36
				 
				
				![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#5 | |
| 
			
			
			
			 Пользователь 
			![]() Регистрация: 22.10.2010 
				
				Возраст: 46 
				
Город: Москва 
Регион: 77, 97, 99, 177 
Машина: Toyota Camry v40 
					Сообщений: 33
				 
				
				![]()  | 
	
	
	
	
		
			
			 Цитата: 
	
 
				__________________ 
		
		
		
		
	
	Комп в тачке: ![]() Установка: [######80%####__] Настройка: [#####_60%_______]  | 
|
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
![]()  | 
	
	
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме | 
		
  | 
	
		 |