1. При засыпании, перед MUTE, необходимо запомнить/сохранить значение уровня громкости. Но в iCarDS так просто уровень громкости не получить. Команда SETVARBYCODE;PrevVolume;VOLUME занесет в переменную PrevVolume значение метки VOLUME, т.е. громкость, но со знаком % на конце. Чтобы получить и запомнить именно число (без %), можно использовать Autoit-скрипт:
PHP код:
; Если iCarDS запущен, то... If ProcessExists("iCarDS.exe") Then $SDK = ObjCreate("RideRunner.sdk") $PrevVolume = $SDK.GetInfo("VOLUME") ; Получаем значение метки громкости $PrevVolume = StringLeft($PrevVolume, StringLen($PrevVolume) - 1) ; Отбрасываем символ % $SDK.Execute("SETVAR;PrevVolume;" & $PrevVolume) ; Запоминаем уровень громкости в переменной EndIf
Перед MUTE необходимо прописать запуск скрипта с помощью RUNQW.
2. Для плавного возрастания громкости с 0 до запомненного значения можно использовать следующий код, размещенный в UserExecTBL.ini:
PHP код:
"VOL_UP_SMOOTH","SetVar;CurrentVolume;0||StartTimer;_VOL_UP_SMOOTH2_;20" "on_VOL_UP_SMOOTH2_timer","if;<($CurrentVolume$;$PrevVolume$);{EVAL;CurrentVolume;$CurrentVolume$+1||SETVOL;MASTER;$CurrentVolume$};{EndTimer;_VOL_UP_SMOOTH2_}"
Здесь используется таймер, срабатывающий с периодичностью 20 мс (чем меньше период, тем быстрее будет нарастать громкость). Цикл while не используется, т.к. iCarDS подвиснет до тех пор, пока цикл не завершится.
В ExecTBL.ini в команду выхода из сна ( ONRESUME) необходимо добавить запуск VOL_UP_SMOOTH.
|