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

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ > Дополнительный софт

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2011, 15:37   #1
se13
Пользователь
 
Регистрация: 25.04.2011
Возраст: 46
Регион: 31
Сообщений: 36
se13 is on a distinguished road
По умолчанию AHK скрипт: Переход ноутбука в режим сна и через ххх время гибернация, нужна помощь.

Долго искал и не нашел. Задача у меня такая. Нужно чтобы ноутбук засыпал при переключении на питание от батареи через 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
se13 вне форума   Ответить с цитированием
Старый 05.07.2011, 04:06   #2
se13
Пользователь
 
Регистрация: 25.04.2011
Возраст: 46
Регион: 31
Сообщений: 36
se13 is on a distinguished road
По умолчанию

Есть мысль, но пока как сделать не знаю. Нужно программно включать и выключать задачу в планировщике. То есть. Скрипт перед тем как отправит комп спать, включает задачу, в которой прописанно например запустить скрипт который отправит комп в гибернацию, а для этого нужно разбудить комп. Не получается запустить задачу перед сном и соответственно выключить перед гибернацией. Есть какие мысли, или другие варианты?
se13 вне форума   Ответить с цитированием
Старый 08.07.2011, 07:28   #3
iron_man
Пользователь
 
Аватар для iron_man
 
Регистрация: 22.10.2010
Возраст: 44
Город: Москва
Регион: 77, 97, 99, 177
Машина: Toyota Camry v40
Сообщений: 33
iron_man is on a distinguished road
По умолчанию

Цитата:
Сообщение от se13 Посмотреть сообщение
Есть мысль, но пока как сделать не знаю. Нужно программно включать и выключать задачу в планировщике. То есть. Скрипт перед тем как отправит комп спать, включает задачу, в которой прописанно например запустить скрипт который отправит комп в гибернацию, а для этого нужно разбудить комп. Не получается запустить задачу перед сном и соответственно выключить перед гибернацией. Есть какие мысли, или другие варианты?
попробуй эту прогу
http://www.compcar.ru/forum/showthread.php?t=7484
Единственное там осуществяется переход по нажатию кнопки питания (физически, не программно) Но в принципе могу изменить событие на смену источника питания
__________________
Комп в тачке:
Установка: [######80%####__]
Настройка: [#####_60%_______]
iron_man вне форума   Ответить с цитированием
Старый 08.07.2011, 23:57   #4
se13
Пользователь
 
Регистрация: 25.04.2011
Возраст: 46
Регион: 31
Сообщений: 36
se13 is on a distinguished road
По умолчанию

Цитата:
Сообщение от iron_man Посмотреть сообщение
попробуй эту прогу
http://www.compcar.ru/forum/showthread.php?t=7484
Единственное там осуществяется переход по нажатию кнопки питания (физически, не программно) Но в принципе могу изменить событие на смену источника питания
Пробовал эту прогу. Настольный работает не стабильно, иногда глючит. Ноут в машине всегда глючит. Методом научного тыка выяснил что это блютуз не успервает подгружаться в момент выхода компа из сна и перехода в гибернейт. Если просто мышкой усыпить комп, потом разбудить, поюдождать 30 секунд (или дождаться когда блютуз посинеет) и также мышкой нажать гибернейт, то всё прекрасно работает. Так вот. В конечном плане мне нужен только таймер пробуждения, всё остальное могу делать скриптом, но если можно подправить эту програмульку под мои нужды, то было бы просто супер. Или может кто подскажит есть ли в реестре винды7 параметр чтоб растянуть время от срабатывания таймера пробуждения, до отправки команды гибернейт. PS. Дрова переставлял не один раз и разных версий, текущие дррова IVT_BlueSoleil_8.0.356.0.
se13 вне форума   Ответить с цитированием
Старый 10.07.2011, 21:04   #5
iron_man
Пользователь
 
Аватар для iron_man
 
Регистрация: 22.10.2010
Возраст: 44
Город: Москва
Регион: 77, 97, 99, 177
Машина: Toyota Camry v40
Сообщений: 33
iron_man is on a distinguished road
По умолчанию

Цитата:
Сообщение от se13 Посмотреть сообщение
Пробовал эту прогу. Настольный работает не стабильно, иногда глючит. Ноут в машине всегда глючит. Методом научного тыка выяснил что это блютуз не успервает подгружаться в момент выхода компа из сна и перехода в гибернейт. Если просто мышкой усыпить комп, потом разбудить, поюдождать 30 секунд (или дождаться когда блютуз посинеет) и также мышкой нажать гибернейт, то всё прекрасно работает. Так вот. В конечном плане мне нужен только таймер пробуждения, всё остальное могу делать скриптом, но если можно подправить эту програмульку под мои нужды, то было бы просто супер. Или может кто подскажит есть ли в реестре винды7 параметр чтоб растянуть время от срабатывания таймера пробуждения, до отправки команды гибернейт. PS. Дрова переставлял не один раз и разных версий, текущие дррова IVT_BlueSoleil_8.0.356.0.
Завтра подправлю код, скину в той же теме прогу. Поставлю задержку на переход в гибернейт 30 секунд.
__________________
Комп в тачке:
Установка: [######80%####__]
Настройка: [#####_60%_______]
iron_man вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



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


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