Тема: iCarDS+Foobar2000
Показать сообщение отдельно
Старый 11.12.2014, 23:25   #591
Lexins
Старший Пользователь
 
Регистрация: 05.02.2014
Возраст: 41
Город: Москва
Регион: 77, 97, 99, 177
Машина: Kia Cerato
Сообщений: 139
Lexins has a spectacular aura aboutLexins has a spectacular aura aboutLexins has a spectacular aura about
По умолчанию

Цитата:
Сообщение от Bersenev Посмотреть сообщение
Если речь про AutoIt, то вот исходник SkinMediaTitle.au3, а если про компонент для фубара, то всё зависит от того на чём его писать.
У меня получилось с таким кодом:
Код:
_Main()

Func _Main()

    $rr = ObjCreate("RideRunner.sdk")

    Global $IsWork = 1    ; Ключ цикла, выполнять пока равно 1
    Global $IsRun = 0    ; Ключ запуска окна, если 0 окно ещё не найдено

    Global $name = ""    ; Имя окна, которое необходимо перехватить
    Global $namecontrol = ""    ; Имя окна, которое необходимо перехватить
    Global $FoobarWindowTitlePrev=""

    If $CmdLine[0] = 0  Then
        $IsWork = 0
    Else
        If $CmdLine[0] > 0  Then $name = $CmdLine[1]
        EndIf


    While $IsWork

        Opt("WinTitleMatchMode", 2)

        $handle = WinGetHandle($name)     ; Ищем окно с заданным именем
        If @error Then
            If $IsRun Then
                $IsWork = 0
            EndIf ; если окно не найдено, а ключ запуска окна установлен в 1, т.е. окно закрыто, то сбросить ключ выхода для завершения скрипта
        Else
            $IsRun = 1    ; если окно найдено устанавливаем ключ запуска окна
            $FoobarWindowTitle = WinGetTitle($handle)
            $FoobarWindowTitlePrev = $rr.getinfo("=$CurrentSkinMediaTitle$")
            If $FoobarWindowTitlePrev <> $FoobarWindowTitle Then $rr.Execute("SETVAR;CurrentSkinMediaTitle;" & $FoobarWindowTitle)
             $FoobarWindowTitlePrev = $FoobarWindowTitle
			EndIf
			; для отображения процентов добавить в Foobar2000 такой код в конец Title:
			; %playback_time%|%playback_time_remaining%|$muldiv(%_time_elapsed_seconds%,100,%_time_total_seconds%)
			$FoobarTrimTitle = StringRight ($FoobarWindowTitle, 15)
			$checkstr = StringInStr($FoobarTrimTitle,"|")
			If $checkstr <> 0 Then
            $aFooTimers = StringSplit($FoobarTrimTitle,"|")
            ;If IsArray($aFooTimers) Then
			$FoobarTrackPos = $aFooTimers[3]
			$FoobarTrackTime = $aFooTimers[1]
			$FoobarRTrackTime = $aFooTimers[2]
			$rr.Execute("SetLabel;!foobar_trackpos;" & $FoobarTrackPos)
			$rr.Execute("SetLabel;!foobar_tracktime;" & $FoobarTrackTime)
			$rr.Execute("SetLabel;!foobar_rtracktime;" & $FoobarRTrackTime)
			EndIf



         $state = WinGetState($name, "")
         If BitAnd($state, 2) Then
            $CurrentApp = $rr.getinfo("=$CurrentApp$")
            $SkinMediaId = $rr.getinfo("=$SkinMediaId$")
            $SkinMediaN = $rr.getinfo("=$SkinMedia" & $SkinMediaId & "$")

             If $CurrentApp <> $SkinMediaN Then
                $rr.Execute("Activate;iCar DS")
            EndIf
         EndIf

        Sleep(500)
    WEnd
EndFunc   ;==>_Main

СПАСИБО!!

Последний раз редактировалось Lexins; 14.12.2014 в 15:50. Причина: Bug fix in Code
Lexins вне форума   Ответить с цитированием