Показать сообщение отдельно
Старый 17.10.2015, 03:47   #201
seriousstas
Бывалый писикарщик
 
Регистрация: 14.06.2013
Регион: Украина
Машина: Nissan Qashqai+2
Сообщений: 3,424
seriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant futureseriousstas has a brilliant future
По умолчанию

Krysanov
Цитата:
Давай уже в студию, хочу тоже потестить..
Держи (видео работы и файлы добавил в шапку) , спрашивай , если не ясно чего...
WinClose("iCar DS") должно быть в конце . Перед ним закрывай , всё , что нужно
Запуск сверху (рядом с Run("taskkill....). Икар запускается самим скриптом без доп. команд .
Код:
#NoTrayIcon ; спрятать икону из трея
#RequireAdmin ; Запуск от админа
#include <WindowsConstants.au3>
#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

Последний раз редактировалось seriousstas; 17.10.2015 в 14:28.
seriousstas вне форума   Ответить с цитированием