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.