#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Comment=Tune1by1
#AutoIt3Wrapper_Res_Description=Tune1by1
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Danver
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#Include <HotKey.au3>
#Include <vkConstants.au3>
#Include <1by1.au3>
Global $OptionsArray[1]
Global $DefaultNumber = 1
Global $ExitItem
Global $Seperator
Global $CurSong
Global $CurPath
Opt("TrayMenuMode", 1)
If Not ProcessExists("1by1.exe") Then ; если плеер не запушен
$Su = Run(@ScriptDir & "\1by1.exe") ; пробуем его запустить
Sleep(1000)
_1by1Hide()
If $Su = 0 Then Exit ; если не получилось то выходим
EndIf
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F3), '_1by1PauseResume') ; Вин+Альт+Ф3 - Плей/пауза
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F2), '_1by1PrevTrack') ; Вин+Альт+Ф2 - Прде. Трек
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F4), '_1by1NextTrack') ; Вин+Альт+Ф4 - След. трек
_HotKeyAssign(BitOR($CK_WIN, $CK_ALT, $VK_F1), 'ShowHide') ; Вин+Альт+Ф1 - Показать/скрыть
Func ShowHide() ; показать скрыть окно плеера
If WinGetState ('[CLASS:1by1WndClass]') = 21 Then ; если скрыто
_1by1Show() ; показать
ElseIf WinGetState ('[CLASS:1by1WndClass]') = 15 Then ; если активно
_1by1Hide() ; скрыть
EndIf
EndFunc
$CurPath = ControlTreeView('[CLASS:1by1WndClass]', "", "SysTreeView321", "GetSelected") ; запомним текущий путь
MakeMenu() ; сделаем меню
Func MakeMenu() ; сделаем меню
If ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "GetItemCount") > 0 Then ; если список не пустой
ReDim $OptionsArray[ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "GetItemCount")] ; подстраиваем массив под количество треков
For $i = 0 To UBound($OptionsArray)-1 ; шагаем по массиву
$OptionsArray[$i] = TrayCreateItem(ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "GetText", $i)) ; заполняем меню названиями песен
Next
$Seperator = TrayCreateItem("") ; добавляем разделитель
$ExitItem = TrayCreateItem("Выход") ; добавляем меню выход
EndIf
EndFunc
Func DelMenu() ; очищаем меню (не придумал как это сделать иначе)
For $i = 0 To UBound($OptionsArray)-1 ; шакаем по массиву
TrayItemDelete($OptionsArray[$i]) ; удаляем элемент
Next
TrayItemDelete($Seperator) ; удаляем разделитель
TrayItemDelete($ExitItem) ; удаляем меню Выход
EndFunc
While 1
Sleep(10)
If $CurPath <> ControlTreeView('[CLASS:1by1WndClass]', "", "SysTreeView321", "GetSelected") Then ; если изменился путь в дереве (перешли в другую папку)
DelMenu() ; очищаем меню
sleep(1000)
MakeMenu() ; заполняем треками из новой папки
$CurPath = ControlTreeView('[CLASS:1by1WndClass]', "", "SysTreeView321", "GetSelected") ; запоминаем текущий путь
EndIf
$TrayMsg = TrayGetMsg() ; обрабатываем события меню
For $i=0 to UBound($OptionsArray)-1 ; шагаем по массиву
If $OptionsArray[$i] = $TrayMsg Then ; если произошедшее событие соответвует идентификатору меню
ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "SelectClear") ; очищаем выделение в списке плеера
ControlListView('[CLASS:1by1WndClass]', "", "SysListView321", "Select", $i) ; выделяем выбранный в меню трек в списке плеера
TrayItemSetState($i,1) ; помечаем его галочкой
_1by1Play() ; нажимаем плей
TrayItemSetState($OptionsArray[$i],1) ; в подсказке к иконке в трее пишем трек, который выбрали и который сейчас играем
EndIf
If TrayItemGetText ($OptionsArray[$i]) = _1by1SongName() Then ; если играющий трек соответствует тому треку что в меню
TrayItemSetState($OptionsArray[$i],1) ; помечаем его
Else ; если не соответсвует
TrayItemSetState($OptionsArray[$i],4) ; убираем пометку галочкой
EndIf
Next
If $CurSong <> _1by1SongName() Then ; если текущая песня изменилась
TrayTip("Играет трек:", _1by1SongName(), 10, 1) ; показываем всплывающую подсказку возле иконки в трее
$CurSong = _1by1SongName() ; запоминаем название текущего трека
EndIf
If $TrayMsg = $ExitItem Then
ProcessClose("1by1.exe") ; закрываем плеер
Exit ; если нажали Выход то завершаем скрипт
EndIf
TraySetToolTip (_1by1SongName()) ; обновляем название песни в подсказке к иконке в трее
WEnd