Тема: AutoHotkey: Управление Winamp'ом
Я, когда сижу за компом, почти всегда что-нибудь слушаю (не обязательно музыку). Юзаю Winamp. При этом, на мой взгляд, управлять им с клавиатуры несравнимо удобнее, чем тыкать мышью. С Winamp'ом поставляется плагинчик, для назначения горячих клавиш. Однако он не так гибок в назначении нужных клавиш. Кроме того, он отъедает ресурсы компа (скрипт, конечно, тоже, но скрипт все равно у меня постоянно загружен, так что плюс-минус десяток хоткеев - роли не играют). Мне удобно управлять Winamp'ом с цифровой клавиатуры, однако, надеюсь, что вы не станете стесняться переназначить клавиши на свой вкус .
В предлагаемом скрипте я урезал управление громкостью, чтобы не загромождать идею .
;*****************************************************************************
; AutoHotkey Version: 1.0.41.01+
; Автор: Androgen Belkin
; Имя скрипта: ControlsWinamp.ahk (v.2.1)
;*****************************************************************************
; Управление Winamp'ом с NamPad'а (цифровая клавиатура).
;*****************************************************************************
#NoTrayIcon ; не отображать иконку скрипта в трее
#NoEnv ; запрещаем имена переменных как у переменных окружения (повышаем производительность скрипта)
SendMode Input ; новый режим высылки без задержки и повышенной надежности
DetectHiddenWindows, On ; искать в скрытых окнах (если Winamp свернут)
; ========== НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ ==========
Winamp_Path = D:\Program_2\Winamp\winamp.exe ; путь к Winamp'у
Vol_Step = 4 ; на сколько процентов изменять громкость за один раз
; ========== КОНЕЦ НАСТРОЕК ПОЛЬЗОВАТЕЛЯ ==========
$Numpad0:: Send, {Numpad0} ; высылать Numpad0 всегда, кроме тех случаев, когда он используется в горячих клавишах
$NumpadIns:: Send, {NumpadIns} ; высылать NumpadIns всегда, кроме тех случаев, когда он используется в горячих клавишах
$NumLock:: Send, {NumLock} ; высылать NumLock всегда, кроме тех случаев, когда он используется в горячих клавишах
; ========== ЗАПУСТИТЬ WINAMP ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadEnter:: ; запустить winamp
Numpad0 & NumpadEnter:: ; запустить winamp
Launch_Media:: ; обработка мультимедийной клавы
;-----------------------------------------------------------------------------
IfNotExist, %Winamp_Path% ; если НЕ существует указанный файл для запуска, то...
Return ; закончить обработку горячей клавиши
; Если путь указан верно, то...
Process, Exist, Winamp.exe ; проверить существование процесса
If ErrorLevel <> 0 ; если Winamp уже запущен, то...
WinActivate, ahk_class Winamp v1.x ; активировать окно
; если не запущен, то...
Run, %Winamp_Path% ; запустить
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ЗАКРЫТЬ WINAMP ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadDel:: ; закрыть winamp
Numpad0 & NumpadDot:: ; закрыть winamp
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40001,,, ahk_class Winamp v1.x ; закрыть Winamp
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ВОСПРОИЗВЕДЕНИЕ/ПАУЗА ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadClear:: ; воспроизведение/пауза
Numpad0 & Numpad5:: ; воспроизведение/пауза
Media_Play_Pause:: ; обработка мультимедийной клавы
;-----------------------------------------------------------------------------
SendMessage, 0x400,, 104,, ahk_class Winamp v1.x ; проверка воспроизведения
If ErrorLevel = 0 ; если не воспроизводится, то...
PostMessage, 0x111, 40045,,, ahk_class Winamp v1.x ; включить воспроизведение
Else ; если воспроизводится, то...
PostMessage, 0x111, 40046,,, ahk_class Winamp v1.x ; поставить на паузу
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ВОСПРОИЗВЕДЕНИЕ/ПАУЗА ПРОБЕЛОМ ==========
;-----------------------------------------------------------------------------
~Space:: ; воспроизведение/пауза (если активно окно Winamp)
;-----------------------------------------------------------------------------
IfWinActive, ahk_class BaseWindow_RootWnd ; если активное окно - Winamp
{
SendMessage, 0x400,, 104,, ahk_class Winamp v1.x ; проверка воспроизведения
If ErrorLevel = 0 ; если не воспроизводится, то...
PostMessage, 0x111, 40045,,, ahk_class Winamp v1.x ; включить воспроизведение
Else ; если воспроизводится, то...
PostMessage, 0x111, 40046,,, ahk_class Winamp v1.x ; поставить на паузу
}
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ПРЕДЫДУЩИЙ ТРЕК ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadLeft:: ; предыдущий трек
Numpad0 & Numpad4:: ; предыдущий трек
Media_Prev:: ; обработка мультимедийной клавы
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40044,,, ahk_class Winamp v1.x ; предыдущий трек
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== СЛЕДУЮЩИЙ ТРЕК ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadRight:: ; следующий трек
Numpad0 & Numpad6:: ; следующий трек
Media_Next:: ; обработка мультимедийной клавы
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40048,,, ahk_class Winamp v1.x ; следующий трек
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== НАЗАД НА 5 СЕКУНД ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadHome:: ; назад на 5 секунд
Numpad0 & Numpad7:: ; назад на 5 секунд
^Media_Prev:: ; обработка мультимедийной клавы (CTRL+)
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40144,,, ahk_class Winamp v1.x ; назад на 5 секунд
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ВПЕРЕД НА 5 СЕКУНД ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadPgUp:: ; вперед на 5 секунд
Numpad0 & Numpad9:: ; вперед на 5 секунд
^Media_Next:: ; обработка мультимедийной клавы (CTRL+)
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40148,,, ahk_class Winamp v1.x ; вперед на 5 секунд
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ============== ОСТАНОВИТЬ ===============
;-----------------------------------------------------------------------------
NumpadIns & NumpadEnd:: ; остановить
Numpad0 & Numpad1:: ; остановить
Media_Stop:: ; обработка мультимедийной клавы
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40047,,, ahk_class Winamp v1.x ; остановить воспроизведение
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ВОСПРОИЗВОДИТЬ ВРАЗБРОС =============
;-----------------------------------------------------------------------------
NumLock & NumpadMult:: ; воспроизводить вразброс (включить/выключить)
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40023,,, ahk_class Winamp v1.x ; воспроизводить вразброс
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== СВЕРНУТЬ/РАЗВЕРНУТЬ ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadMult:: ; свернуть/развернуть
Numpad0 & NumpadMult:: ; свернуть/развернуть
WinAmp_Min_Restore: ; метка входа из WIN+S (она понадобится, если использовать скрипт для управления окнами)
;-----------------------------------------------------------------------------
WinGet, State, MinMax, ahk_class Winamp v1.x
If State = -1 ; если окно минимизировано, то...
WinActivate, ahk_class Winamp v1.x ; восстановить свернутое окно
Else ; если окно НЕ минимизировано, то...
{
IfWinActive, ahk_class BaseWindow_RootWnd ; если окно активно, то...
WinMinimize, ahk_class Winamp v1.x ; свернуть окно
Else ; если окно НЕ активно, то...
WinActivate, ahk_class Winamp v1.x ; активизировать окно (вывести на передний план)
}
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ДИАЛОГ ОТКРЫТИЯ ФАЙЛОВ ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadDiv:: ; диалог открытия файлов
Numpad0 & NumpadDiv:: ; диалог открытия файлов
;-----------------------------------------------------------------------------
WinActivate, ahk_class Winamp v1.x ; активизировать окно
PostMessage, 0x111, 40029,,, ahk_class Winamp v1.x ; открытие окна открытия
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ОКНО - ПОВЕРХ ВСЕХ ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadUp:: ; окно winamp - поверх всех
Numpad0 & Numpad8:: ; окно winamp - поверх всех
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40019,,, ahk_class Winamp v1.x ; окно - поверх всех
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ПОКАЗАТЬ/СКРЫТЬ ПЛЕЙ-ЛИСТ ==========
;-----------------------------------------------------------------------------
NumpadIns & NumpadDown:: ; показать/скрыть плей-лист
Numpad0 & Numpad2:: ; показать/скрыть плей-лист
;-----------------------------------------------------------------------------
PostMessage, 0x111, 40040,,, ahk_class Winamp v1.x ; показать/скрыть плей-лист
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== УДАЛИТЬ ФАЙЛ С ДИСКА =============
;-----------------------------------------------------------------------------
~+DEL:: ; SHIFT+DEL - удалить файл с диска
;-----------------------------------------------------------------------------
IfWinActive, Playlist Editor ; если активно окно "Playlist Editor"
{
Send, !+{DEL} ; нажать ALT+SHIFT+DEL (удалить файлы с диска)
KeyWait, DEL ; ожидать пока клавиша не будет отпущена (чтобы исключить срабатывание от простого удержания нажатой клавиши)
; ========== ... И СОХРАНЕНИЕ ПЛЕЙ-ЛИСТА =============
;~ Send, ^{sc01F} ; выслать CTRL+S (сохранить плей-лист)
}
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ВЫКЛЮЧИТЬ ЗВУК =============
;-----------------------------------------------------------------------------
NumLock & NumpadSub:: ; выключить звук
;-----------------------------------------------------------------------------
SoundSet, 1,, Mute ; выключить все звуковые устройства
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== ВКЛЮЧИТЬ ЗВУК =============
;-----------------------------------------------------------------------------
NumLock & NumpadAdd:: ; включить звук
;-----------------------------------------------------------------------------
SoundSet, 0,, Mute ; включить все звуковые устройства
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== УМЕНЬШИТЬ ГРОМКОСТЬ =============
;-----------------------------------------------------------------------------
NumpadIns & NumpadSub:: ; уменьшить громкость
Numpad0 & NumpadSub:: ; уменьшить громкость
;-----------------------------------------------------------------------------
IfWinExist, ahk_class Winamp v1.x
Loop, %Vol_Step%
PostMessage, 0x111, 40059,,, ahk_class Winamp v1.x ; уменьшить звук
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
; ========== УВЕЛИЧИТЬ ГРОМКОСТЬ =============
;-----------------------------------------------------------------------------
NumpadIns & NumpadAdd:: ; увеличить громкость
Numpad0 & NumpadAdd:: ; увеличить громкость
;-----------------------------------------------------------------------------
IfWinExist, ahk_class Winamp v1.x
Loop, %Vol_Step%
PostMessage, 0x111, 40058,,, ahk_class Winamp v1.x ; увеличить звук
Return ; закончить обработку горячей клавиши
;-----------------------------------------------------------------------------
А здесь можно посмотреть и взять скрипт, совмещающий управление Foobar'ом и WinAmp'ом