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

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   iCarDS (http://pccar.ru/forumdisplay.php?f=121)
-   -   iCarDS + Сон, Гибридный сон и Гибернация (http://pccar.ru/showthread.php?t=23331)

seriousstas 17.10.2015 03:47

Krysanov
Цитата:

Давай уже в студию, хочу тоже потестить..
Держи (видео работы и файлы добавил в шапку) , спрашивай , если не ясно чего...
WinClose("iCar DS") должно быть в конце . Перед ним закрывай , всё , что нужно
Запуск сверху (рядом с Run("taskkill....). Икар запускается самим скриптом без доп. команд .
Код:

#NoTrayIcon ; спрятать икону из трея
#RequireAdmin ; Запуск от админа
#include
#pragma compile(Icon, "C:\Users\carPC\Documents\iCarDS\skins\Chameleon\Scripts\iCar_ico.ico") ; Переместить иконку по тому-же пути
Sleep(3000) ; Поставить нужное время
Run("taskkill /f /im BlueSoleilCS.exe","", @SW_HIDE) ; Закрыть системный процесс при старте
Global $PBT_APMSUSPEND = 0x0004
Global $PBT_APMRESUMESUSPEND = 0x0007
$hGUI = GUICreate("Restart", 100, 100, 1, 1)
GUIRegisterMsg($WM_POWERBROADCAST, "Standby")

Local $omyerror
$omyerror = ObjEvent("AutoIt.Error", "MyErrFunc")
Dim $vol_from_speed[201]
Global $rr = ObjCreate("RideRunner.sdk")
_main()

Func myerrfunc()
        $hexnumber = Hex($omyerror.number, 8)
        Exit
EndFunc

Func _initvolarray()
        $delta = 0
        $vol_from_speed[0] = $delta
        For $i = 0 To 150 Step 10
                $tmp_vol_from_speed = $rr.getinfo("=$vol_from_speed_" & $i + 10 & "$") / 10
                For $j = 1 To 10 Step 1
                        $delta = $delta + $tmp_vol_from_speed
                        $vol_from_speed[$i + $j] = Round($delta, 2)
                Next
        Next
        For $i = 162 To 200 Step 1
                $delta = $delta + $tmp_vol_from_speed
                $vol_from_speed[$i] = Round($delta, 2)
        Next
EndFunc

Func _main()
        Global $iswork = 1
        Global $isrun = 0
        Global $name = "[CLASS:TSkinForm]"
        Global $namecontrol = ""
        Global $foobarwindowtitleprev = ""
        Global $speed_prev = Round(Number($rr.getinfo("$IsDriveSpd$")), 0)
        Global $speed_prev_round = Round($speed_prev, -1)
        Global $vol_from_speed_full = 0
        Global $vol_min = Number($rr.getinfo("=$vol_from_speed_min$"))
        Global $vol_max = Number($rr.getinfo("=$vol_from_speed_max$"))
        _initvolarray()
        $rr.execute("SetVar;vol_from_speed_full;" & Round($vol_from_speed[$speed_prev], 2))
        While $iswork
                $handle = WinGetHandle($name)
                If @error Then
                        If $isrun Then
                                $iswork = 0
                        EndIf
                Else
                        $isrun = 1
                        If WinActive($name) OR WinActive("[CLASS:TOverlayForm]") OR WinActive("[CLASS:TPopupSkinForm]") OR WinActive("[CLASS:TModalSkinForm]") OR WinActive("[CLASS:TMediaForm]") Then
                                $rr.execute("SETIND;!iCarDS_Active;ON")
                        Else
                                $rr.execute("SETIND;!iCarDS_Active;OFF")
                        EndIf
                EndIf
                $volume = StringSplit($rr.getinfo("VOLUME"), "%")
                If @error = 0 Then
                        $current_volume = Number($volume[1])
                Else
                        $current_volume = 0
                EndIf
                $speed_current = Round(Number($rr.getinfo("$IsDriveSpd$")), 0)
                If $speed_current > $speed_prev Then
                        $delta_vol = Round($vol_from_speed[$speed_current] - $vol_from_speed[$speed_prev], 2)
                        If $current_volume + $delta_vol < $vol_max Then $rr.execute("volperc+;" & $delta_vol & "||SetVar;vol_from_speed_full;" & $vol_from_speed[$speed_current])
                Else
                        If $speed_current < $speed_prev Then
                                $delta_vol = Round($vol_from_speed[$speed_prev] - $vol_from_speed[$speed_current], 2)
                                If $current_volume - $delta_vol > $vol_min Then $rr.execute("volperc-;" & $delta_vol & "||SetVar;vol_from_speed_full;" & $vol_from_speed[$speed_current])
                        EndIf
                EndIf
                $speed_prev = $speed_current
                If Number($rr.getinfo("=$Is_new_vol_from_speed$")) = 1 Then
                        _initvolarray()
                        $rr.execute("SetVar;Is_new_vol_from_speed;0")
                EndIf
                Sleep(300)
        WEnd
EndFunc

While 1
    Sleep(100)
WEnd

Func Standby($hWnd, $Msg, $wParam, $lParam)
    Select
        ; Вход в спящий режим
        Case $wParam = $PBT_APMSUSPEND
            Suspend()
        Case Else
    EndSelect
EndFunc

; Вход в спящий режим
Func Suspend()
  ; Закрываем foobar2000
    WinClose("foobar2000")
  ; Закрываем iCarDS
    WinClose("iCar DS")
EndFunc


Krysanov 17.10.2015 19:29

Спасибо, возьму на заметку..
Сейчас вроде все работает.. Иногда бывает вот что.. Если завожу машину, которая ушла в сон (по времени до 30 мин), то монитор не включается, голосом приветствует и тишина... Потом нажимаю кнопку включения компа, все загружается почти мгновенно:shok:
БП у меня m2-atx, , настройки электропитания выставлены как на стр 3 темы тонкая настройка электропитания
http://www.pccar.ru/showthread.php?t...F0%EE%E9%EA%E0

Krysanov 18.10.2015 16:41

Во , как бывает.. Обнаружил, что настройки внешней звуковой карты сбрасываются по дефолту (все на одном уровне). Сон тут может быть причиной?

Krysanov 19.10.2015 18:39

Seriousstas, в первом посте темы пункт 2 ты пишешь

Убрал из третей строки ExecTBL.ini папки Chameleon команду
Код:
||RUN;$skinpath$Scripts\iCarMainScript.exe

Если не пользоваться твоим первым вариантом скрипта, и применить то, что ты предложил.. Ничего не нарушится? Сам пока не пробовал

seriousstas 19.10.2015 19:27

Цитата:

Сообщение от Krysanov (Сообщение 340840)
Seriousstas, в первом посте темы пункт 2 ты пишешь

Убрал из третей строки ExecTBL.ini папки Chameleon команду
Код:
||RUN;$skinpath$Scripts\iCarMainScript.exe

Если не пользоваться твоим первым вариантом скрипта, и применить то, что ты предложил.. Ничего не нарушится? Сам пока не пробовал

Это команда на запуск скрипта iCarMainScript.exe вместе с Икаром .
Тк мы теперь наоборот - скриптом запускаем Икар - она просто не
нужна (если оставить, то в памяти будет висеть дубликат...).
Ничего не нарушается - метод обкатан несколько недель ..

Krysanov 19.10.2015 20:11

Цитата:

Сообщение от seriousstas (Сообщение 340841)
Это команда на запуск скрипта iCarMainScript.exe в места с Икаром .
Тк мы теперь наоборот - скриптом запускаем Икар - она просто не
нужна (если оставить, то в памяти будет висеть дубликат...).
Ничего не нарушается - метод обкатан несколько недель ..

Спасибо, Стас

Krysanov 20.10.2015 18:13

Lexx09, нужна проверка скрипта
Так будут "отваливаться" лишние иконки?

Krysanov 20.10.2015 18:16

Цитата:

Сообщение от Krysanov (Сообщение 340846)
Спасибо, Стас

Убрал из 3 строки ExecTBL.ini папки Chameleon

Код:

||RUN;$skinpath$Scripts\iCarMainScript.exe
теперь иконка iCarMainScript.exe не появляется вообще
Это правильно?

seriousstas 20.10.2015 18:36

Цитата:

Сообщение от Krysanov (Сообщение 340937)
Убрал из 3 строки ExecTBL.ini папки Chameleon

Код:

||RUN;$skinpath$Scripts\iCarMainScript.exe
теперь иконка iCarMainScript.exe не появляется вообще
Это правильно?

Верхняя строка #NoTrayIcon ; спрятать икону из трея
можно убрать если нужна иконка в трее...

Наличие скрипта можно посмотреть в "Диспетчере задач"

Кстати по твоей ссылке #207 никакого скрипта не видно ..

Krysanov 20.10.2015 19:08

вопрос по существу... ссд быстрее умрет, если пользоваться сном?


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

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