Updated
Version 1.1:
* If you press play/pause button, and neither Winamp or MPC is running, Winamp is started.
; ----------------------------------------- ; Play/Pause Button ; If Winamp is playing a song, then pause Winamp ; Else, if Media Player Classic is in focus, toggle Play/Pause in Media Player Classic ; Else, if Winamp is paused, unpause Winamp ; Else, if Winamp is stopped, play Winamp ; ----------------------------------------- Media_Play_Pause:: { WM_USER = 0x0400 WM_COMMAND = 0x0111 IPC_ISPLAYING = 104 WINAMP_BUTTON2 = 40045 ; Play button WINAMP_BUTTON3 = 40046 ; Pause button MPC_ID_PLAY_PLAYPAUSE = 157 ; Play/pause IfWinNotExist, Winamp { IfWinNotExist, Media Player Classic { Run, %ProgramFiles%\Winamp\Winamp.exe Return } } ;Is Winamp currently playing a song? SendMessage, WM_USER, 0, IPC_ISPLAYING,, ahk_class Winamp v1.x WinampStatus := ErrorLevel if (WinampStatus == 1) ; 1 = Winamp is playing { ;Pause Winamp SendMessage, WM_COMMAND, WINAMP_BUTTON3, WINAMP_BUTTON3,, ahk_class Winamp v1.x Return } ;Is MPC in focus? IfWinActive, ahk_class MediaPlayerClassicW { ;Toggle Play/Pause in MPC SendMessage, WM_COMMAND, MPC_ID_PLAY_PLAYPAUSE, MPC_ID_PLAY_PLAYPAUSE,, ahk_class MediaPlayerClassicW Return } ;Fixme: If MPC is _playing_ in the background = pause MPC (cant figure out how to get current state from MPC) ;...... if (WinampStatus == 3 ) ; 3 = Winamp is paused { ;Play Winamp by pressing Pause button SendMessage, WM_COMMAND, WINAMP_BUTTON3, WINAMP_BUTTON3,, ahk_class Winamp v1.x Return } ;Play Winamp by pressing Play button SendMessage, WM_COMMAND, WINAMP_BUTTON2, WINAMP_BUTTON2,, ahk_class Winamp v1.x Return } ; ----------------------------------------- ; Volume Down Button ; If Media Player Classic is focused, decrease volume there ; Else, decrease volume in Winamp ; ----------------------------------------- Volume_Down:: { WM_COMMAND = 0x0111 MPC_ID_VOLUME_DOWN = 162 WINAMP_VOLUMEDOWN = 40059 IfWinActive, ahk_class MediaPlayerClassicW { ;Decrease MPC volume SendMessage, WM_COMMAND, MPC_ID_VOLUME_DOWN, MPC_ID_VOLUME_DOWN,, ahk_class MediaPlayerClassicW Return } ;Decrease Winamp volume x2 SendMessage, WM_COMMAND, WINAMP_VOLUMEDOWN, WINAMP_VOLUMEDOWN,, ahk_class Winamp v1.x SendMessage, WM_COMMAND, WINAMP_VOLUMEDOWN, WINAMP_VOLUMEDOWN,, ahk_class Winamp v1.x Return } ; ----------------------------------------- ; Volume Up Button ; If Media Player Classic is focused, increase volume there ; Else, increase volume in Winamp ; ----------------------------------------- Volume_Up:: { WM_COMMAND = 0x0111 MPC_ID_VOLUME_UP = 161 WINAMP_VOLUMEUP = 40058 IfWinActive, ahk_class MediaPlayerClassicW { ;Increase MPC volume SendMessage, WM_COMMAND, MPC_ID_VOLUME_UP, MPC_ID_VOLUME_UP,, ahk_class MediaPlayerClassicW Return } ;Increase Winamp volume x2 SendMessage, WM_COMMAND, WINAMP_VOLUMEUP, WINAMP_VOLUMEUP,, ahk_class Winamp v1.x SendMessage, WM_COMMAND, WINAMP_VOLUMEUP, WINAMP_VOLUMEUP,, ahk_class Winamp v1.x Return } ; ----------------------------------------- ; Volume Mute Button ; Some applications like MPC captures mute while focused, so we overwrite that behavior. ; This makes the Mute button toggle master mute on/off ; ----------------------------------------- Volume_Mute::SoundSet, +1, MASTER, MUTE