; ----------------------------------------------------------------------------- ; ############################################################################# ; ----------------------------------------------------------------------------- ; Name: MusicControl ; ----------------------------------------------------------------------------- ; Prefix: muc_ ; Version: 1.0 ; Date: 2007-10-25 ; Author: Wolfgang Reszel ; Copyright: 2007 Heise Zeitschriften Verlag GmbH & Co. KG ; ----------------------------------------------------------------------------- ; ----------------------------------------------------------------------------- ; === Initialisation ========================================================== ; ----------------------------------------------------------------------------- init_MusicControl: Prefix = muc %Prefix%_ScriptName = MusicControl %Prefix%_ScriptVersion = 1.0 %Prefix%_Author = Wolfgang Reszel ;FileAppend, `n---- LAUNCHED ----`n, C:\muc.log CreateGuiID("MusicControl") if Lng = 07 ; = Deutsch (0407, 0807, 0c07 ...) { MenuName = %muc_ScriptName% - Tastaturkürzel für Lautstärke und Medien-Player Description = Bietet Tastaturkürzel für Medien-Player und für die Systemlautstärke, welche ähnlich Mac OS X grafisch dargestellt wird. lng_muc_MasterVolume = Systemlautstärke lng_muc_VolUp = Lauter lng_muc_VolDown = Leiser lng_muc_VolMute = Stumm/An lng_muc_Prev = Vorheriges Lied lng_muc_Next = Nächstes Lied lng_muc_Pause = Pause/Play lng_muc_Rwd = Zurückspulen lng_muc_FFwd = Vorspulen lng_muc_Up = Medien-Player lauter lng_muc_Down = Medien-Player leiser lng_muc_Stop = Stop lng_muc_Play = Play lng_muc_ShowOSD = Grafische Anzeige (OSD) lng_muc_PlaySound = akustisches Signal lng_muc_NoMasterVol = Gerät und Regler: lng_muc_TempDisableSound = Signal/OSD unterdrücken mit: lng_muc_HotkeyError = Die Zusatztaste, um das Signal zu unterdrücken,`nsteht im Konflikt mit anderen Tastaturkürzeln!`nBitte wählen Sie eine andere Zusatztaste. lng_muc_DisableWinamp = WinAmp-Unterstützung deaktivieren lng_muc_DisableItunes = Itunes-Unterstützung deaktivieren lng_muc_DisableFoobar = Foobar-Unterstützung deaktivieren lng_muc_DisableWMP = Windows-Media-Player-Unterstützung deaktivieren lng_muc_DisableMediaKeys = Medientasten-Unterstützung deaktivieren lng_muc_LaunchPlayer = Player starten/aktivieren lng_muc_VolAddSub = Schrittweite lng_muc_VistaCompatibility = MusicControl kann unter Vista nicht auf die globle Lautstärke zugreifen,`nda jedes Programm eine eigene Lautstärkeregelung hat.`nDas Problem lässt sich umgehen, indem AutoHotkey/ac'tivAid`nin den Windows-XP-Kompatibilitäts-Modus versetzt wird.`nDies erfordert Zugriff auf die Registry.`nSoll ac'tivAid die Einstellung vornehmen? lng_muc_sub_VistaCompatibility = Kompatibilität zu Vista herstellen } else ; = other languages (english) { MenuName = %muc_ScriptName% - controlling volume and media players Description = Provides hotkeys for conrollling media players and the system volume. It provides visual feedback like in Mac OS X. lng_muc_MasterVolume = master volume lng_muc_VolUp = Up lng_muc_VolDown = Down lng_muc_VolMute = Mute/On lng_muc_Prev = Previous song lng_muc_Next = Next song lng_muc_Pause = Pause/Play lng_muc_Rwd = Backwards lng_muc_FFwd = Fast forward lng_muc_Up = Player volume up lng_muc_Down = Player volume down lng_muc_Stop = Stop lng_muc_Play = Play lng_muc_ShowOSD = Visual feedback (OSD) lng_muc_PlaySound = Enable acoustic feedback lng_muc_NoMasterVol = Device and component: lng_muc_TempDisableSound = Suspend feedback/OSD with: lng_muc_HotkeyError = The key to suspend the feedback`nis in conflict with other hotkeys!`nPlease choose another key. lng_muc_DisableWinamp = Disable WinAmp support lng_muc_DisableItunes = Disable Itunes support lng_muc_DisableFoobar = Disable Foobar support lng_muc_DisableWMP = Disable Windows Media Player support lng_muc_DisableMediaKeys = Disable media keys support lng_muc_VolAddSub = Increment lng_muc_VistaCompatibility = To let MusicControl control the globale volume in Vista,`nac'tivAid/AutoHotkeys needs to be started in the XP compatibility mode.`nShall a'ctivAid modify the Registry for you? lng_muc_sub_VistaCompatibility = Make MusicControl Vista compatible } If CustomLanguage <> gosub, CustomLanguage If activAid_HasChanged = 1 { IfNotExist, extensions\Media\ac'tivAid_MusicControl_vol.wav { func_UnpackSplash("extensions\Media\ac'tivAid_MusicControl_vol2.gif") FileInstall, extensions\Media\ac'tivAid_MusicControl_vol2.gif, extensions\Media\ac'tivAid_MusicControl_vol2.gif func_UnpackSplash("extensions\Media\ac'tivAid_MusicControl_vol.wav") FileInstall, extensions\Media\ac'tivAid_MusicControl_vol.wav, extensions\Media\ac'tivAid_MusicControl_vol.wav func_UnpackSplash("extensions\Media\ac'tivAid_MusicControl_vol.gif") FileInstall, extensions\Media\ac'tivAid_MusicControl_vol.gif, extensions\Media\ac'tivAid_MusicControl_vol.gif func_UnpackSplash("extensions\Media\ac'tivAid_MusicControl_mute.gif") FileInstall, extensions\Media\ac'tivAid_MusicControl_mute.gif, extensions\Media\ac'tivAid_MusicControl_mute.gif } } muc_FadeSpeed = 5 RegRead, muc_foobarPath, HKEY_LOCAL_MACHINE, SOFTWARE\foobar2000, InstallDir If muc_foobarPath = { RegRead, muc_foobarPath, HKEY_CURRENT_USER, SOFTWARE\foobar2000, InstallDir } RegRead, muc_iTunesPath, HKEY_LOCAL_MACHINE, SOFTWARE\Clients\Media\iTunes\shell\open\command RegRead, muc_WinampPath, HKEY_CURRENT_USER,Software\Winamp RegRead, muc_WMPPath, HKEY_LOCAL_MACHINE, SOFTWARE\Clients\Media\Windows Media Player\shell\open\command HideSettings = 0 func_HotkeyRead( "muc_VolUp", ConfigFile, muc_ScriptName, "VolUp", "muc_VolUp", "#Up" ) func_HotkeyRead( "muc_VolDown", ConfigFile, muc_ScriptName, "VolDown", "muc_VolDown", "#Down" ) func_HotkeyRead( "muc_VolMute", ConfigFile, muc_ScriptName, "VolMute", "muc_VolMute", "Pause" ) func_HotkeyRead( "muc_VolUp2", ConfigFile, muc_ScriptName, "VolUp2", "muc_VolUp", "" ) func_HotkeyRead( "muc_VolDown2",ConfigFile, muc_ScriptName, "VolDown2", "muc_VolDown", "" ) func_HotkeyRead( "muc_VolMute2",ConfigFile, muc_ScriptName, "VolMute2", "muc_VolMute", "" ) func_HotkeyRead( "muc_Prev", ConfigFile, muc_ScriptName, "Prev", "muc_Prev", "#Left" ) func_HotkeyRead( "muc_Next", ConfigFile, muc_ScriptName, "Next", "muc_Next", "#Right" ) func_HotkeyRead( "muc_Pause", ConfigFile, muc_ScriptName, "Pause", "muc_Pause", "#Delete" ) func_HotkeyRead( "muc_Rwd", ConfigFile, muc_ScriptName, "Rwd", "muc_Rwd", "#+Left" ) func_HotkeyRead( "muc_FFwd", ConfigFile, muc_ScriptName, "FFwd", "muc_FFwd", "#+Right" ) func_HotkeyRead( "muc_Up", ConfigFile, muc_ScriptName, "Up", "muc_Up", "#+Up" ) func_HotkeyRead( "muc_Down", ConfigFile, muc_ScriptName, "Down", "muc_Down", "#+Down" ) func_HotkeyRead( "muc_Stop", ConfigFile, muc_ScriptName, "Stop", "muc_Stop", "#End" ) func_HotkeyRead( "muc_Play", ConfigFile, muc_ScriptName, "Play", "muc_Play", "#Home" ) IniRead, muc_EnableOSD, %ConfigFile%, %muc_ScriptName%, OSD, 1 IniRead, muc_EnableSound, %ConfigFile%, %muc_ScriptName%, Sound, 1 IniRead, muc_TempDisableSound, %ConfigFile%, %muc_ScriptName%, TempDisableSoundKey, %A_Space% IniRead, muc_Device, %ConfigFile%, %muc_ScriptName%, Device, 1 IniRead, muc_Component, %ConfigFile%, %muc_ScriptName%, Component, MASTER IniRead, muc_VolAddSub, %ConfigFile%, %muc_ScriptName%, VolumeIncrement, 5 IniRead, muc_UseWaveVolume, %ConfigFile%, %muc_ScriptName%, UseWaveVolume, 0 IniRead, muc_CheckCompatibility, %ConfigFile%, %muc_ScriptName%, CheckCompatibility, %A_Space% IniRead, muc_LaunchPlayer, %ConfigFile%, %muc_ScriptName%, LaunchPlayer, 0 SetTimer, muc_tim_VistaCompatibility, -3000 RegisterAdditionalSetting("muc", "DisableWinamp", 0) RegisterAdditionalSetting("muc", "DisableItunes", 0) RegisterAdditionalSetting("muc", "DisableFoobar", 0) RegisterAdditionalSetting("muc", "DisableWMP", 0) RegisterAdditionalSetting("muc", "DisableMediaKeys", 0) RegisterAdditionalSetting("muc", "sub_VistaCompatibility", "", "SubRoutine", (A_OSVersion = "WIN_VISTA") ? "" : "Disabled") Return muc_sub_VistaCompatibility: SetTimer, muc_tim_VistaCompatibility, Off muc_CheckCompatibility = muc_tim_VistaCompatibility: If A_OSVersion = WIN_VISTA { If A_IsCompiled = 1 { If muc_CheckCompatibility = %A_ScriptFullPath% Return RegRead, muc_VistaCompatibility, HKEY_CURRENT_USER, Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, %A_ScriptFullPath% IniWrite, %A_ScriptFullPath%, %ConfigFile%, %muc_ScriptName%, CheckCompatibility } Else { If muc_CheckCompatibility = %A_AhkPath% Return RegRead, muc_VistaCompatibility, HKEY_CURRENT_USER, Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, %A_AhkPath% IniWrite, %A_AhkPath%, %ConfigFile%, %muc_ScriptName%, CheckCompatibility } MsgBox, 52, %muc_ScriptTitle%, %lng_muc_VistaCompatibility% IfMsgBox, Yes { If A_IsCompiled = 1 RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, %A_ScriptFullPath%, WINXPSP2 Else RegWrite, REG_SZ, HKEY_CURRENT_USER, Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers, %A_AhkPath%, WINXPSP2 Reload = 2 Debug("RELOAD",A_LineNumber,A_LineFile,A_ThisFunc A_ThisLabel) Gosub, Reload } } Return SettingsGui_MusicControl: muc_Devices = Loop { SoundGet, muc_Temp,,, %A_Index% If ErrorLevel = Can't Open Specified Mixer break muc_Devices = %muc_Devices%|%A_Index% } StringTrimLeft, muc_Devices, muc_Devices, 1 func_HotkeyAddGuiControl( lng_muc_Prev, "muc_Prev", "xs+10 y+2 W110" ) func_HotkeyAddGuiControl( lng_muc_Next, "muc_Next", "xs+10 y+2 W110" ) func_HotkeyAddGuiControl( lng_muc_Pause, "muc_Pause", "xs+10 y+2 W110" ) func_HotkeyAddGuiControl( lng_muc_Rwd, "muc_Rwd", "xs+10 y+2 W110" ) func_HotkeyAddGuiControl( lng_muc_FFwd, "muc_FFwd", "xs+10 y+2 W110" ) func_HotkeyAddGuiControl( lng_muc_Up, "muc_Up", "xs+10 y+2 W110" ) Gui, Font, S%FontSize6% Bold, Symbol Gui, Add, Text, x+5 yp+3, ù Gosub, GuiDefaultFont Gui, Add, CheckBox, -Wrap gsub_CheckIfSettingsChanged vmuc_UseWaveVolume y+0 Checked%muc_UseWaveVolume%, WAVE/MIDI Gui, Font, S%FontSize7% Bold, Symbol Gui, Add, Text, y+0, û Gosub, GuiDefaultFont func_HotkeyAddGuiControl( lng_muc_Down, "muc_Down", "xs+10 ys+127 W110" ) func_HotkeyAddGuiControl( lng_muc_Stop, "muc_Stop", "xs+10 y+2 W110" ) func_HotkeyAddGuiControl( lng_muc_Play, "muc_Play", "xs+10 y+2 W110" ) Gui, Add, CheckBox, -Wrap gsub_CheckIfSettingsChanged vmuc_LaunchPlayer x+5 yp+3 Checked%muc_LaunchPlayer%, %lng_muc_LaunchPlayer% Gui, Add, GroupBox, xs+10 y+4 h100 w550, %lng_muc_MasterVolume% func_HotkeyAddGuiControl( lng_muc_VolUp, "muc_VolUp", "xs+19 yp+18 W71" ) func_HotkeyAddGuiControl( lng_muc_VolDown, "muc_VolDown", "xs+19 y+2 W71" ) func_HotkeyAddGuiControl( lng_muc_VolMute, "muc_VolMute", "xs+19 y+2 W71" ) Gui, Add, Text, xs+20 y+6, %lng_muc_NoMasterVol% Gui, Add, DropDownList, -Wrap gmuc_sub_CheckIfSettingsChanged vmuc_Device x+10 yp-4 w40, %muc_Devices% GuiControl, ChooseString, muc_Device, %muc_Device% Gui, Add, DropDownList, -Wrap gmuc_sub_CheckIfSettingsChanged vmuc_Component x+10 w110, %muc_Components% Gui, Add, Text, x+10 yp+3, %lng_muc_VolAddSub%: Gui, Add, Edit, x+5 yp-3 Number Limit3 w47 vmuc_VolAddSub gsub_CheckIfSettingsChanged, %muc_VolAddSub% Gui, Add, UpDown, Range0-255, %muc_VolAddSub% Gui, Add, CheckBox, -Wrap gsub_CheckIfSettingsChanged vmuc_EnableOSD xs+415 ys+195 Checked%muc_EnableOSD%, %lng_muc_ShowOSD% Gui, Add, CheckBox, -Wrap gmuc_sub_CheckIfSettingsChanged vmuc_EnableSound xs+415 yp+20 Checked%muc_EnableSound%, %lng_muc_PlaySound% Gui, Add, Text, y+5, %lng_muc_TempDisableSound% Gui, Add, DropDownList, -Wrap y+2 w130 gmuc_sub_CheckIfSettingsChanged vmuc_TempDisableSound_tmp, %lng_None%|%lng_kbShift%|%lng_kbAlt%|%lng_kbCtrl%|%lng_kbWin%|%lng_Right% %lng_kbWin% If muc_TempDisableSound = GuiControl, Choose, muc_TempDisableSound_tmp, 1 If muc_TempDisableSound = Shift GuiControl, ChooseString, muc_TempDisableSound_tmp, %lng_kbShift% If muc_TempDisableSound = Alt GuiControl, ChooseString, muc_TempDisableSound_tmp, %lng_kbAlt% If muc_TempDisableSound = Ctrl GuiControl, ChooseString, muc_TempDisableSound_tmp, %lng_kbCtrl% If muc_TempDisableSound = LWin GuiControl, ChooseString, muc_TempDisableSound_tmp, %lng_kbWin% If muc_TempDisableSound = RWin GuiControl, ChooseString, muc_TempDisableSound_tmp, %lng_Right% %lng_kbWin% GuiControlGet, muc_TempDisableSound_old,, muc_TempDisableSound_tmp muc_Device_old= Gosub, muc_sub_CheckIfSettingsChanged Return muc_sub_CheckIfSettingsChanged: Gosub, sub_CheckIfSettingsChanged GuiControlGet, muc_TempDisableSound_tmp If muc_TempDisableSound_tmp <> %muc_TempDisableSound_old% { If muc_TempDisableSound_tmp = %lng_None% muc_TempDisableSymb = If muc_TempDisableSound_tmp = %lng_kbAlt% muc_TempDisableSymb = ! If muc_TempDisableSound_tmp = %lng_kbShift% muc_TempDisableSymb = + If muc_TempDisableSound_tmp = %lng_kbCtrl% muc_TempDisableSymb = ^ If muc_TempDisableSound_tmp = %lng_kbWin% muc_TempDisableSymb = <# If muc_TempDisableSound_tmp = %lng_Right% %lng_kbWin% muc_TempDisableSymb = ># Loop, 3 { If A_Index = 1 { VarHK = Hotkey_muc_VolUp2 GetKey := func_SortHotkeyModifiers(muc_TempDisableSymb Hotkey_muc_VolUp_new) If (GetKey = Hotkey_muc_VolUp_new OR muc_TempDisableSymb = "") { GetKey = Hotkey_muc_VolUp2_del = 1 } } If A_Index = 2 { VarHK = Hotkey_muc_VolDown2 GetKey := func_SortHotkeyModifiers(muc_TempDisableSymb Hotkey_muc_VolDown_new) If (GetKey = Hotkey_muc_VolDown_new OR muc_TempDisableSymb = "") { GetKey = Hotkey_muc_VolDown2_del = 1 } } If A_Index = 3 { VarHK = Hotkey_muc_VolMute2 GetKey := func_SortHotkeyModifiers(muc_TempDisableSymb Hotkey_muc_VolMute_new) If (GetKey = Hotkey_muc_VolMute_new OR muc_TempDisableSymb = "") { GetKey = Hotkey_muc_VolMute2_del = 1 } } Hotkey_AllHotkeys_tmp := Hotkey_AllNewHotkeys ; Hotkey_AllHotkeys IfNotInstring, Hotkey_AllHotkeys_tmp , % "«<" GetKey " >»" { StringReplace, Hotkey_AllNewHotkeys, Hotkey_AllNewHotkeys, % "«<" %VarHK%_new " >»" , , A %VarHK%_new = %GetKey% If %VarHK%_del <> 1 Hotkey_AllNewHotkeys := Hotkey_AllNewHotkeys "«<" GetKey " >»" } Else { Loop, Parse, Hotkey_Extensions, | { FunctionTmp := A_LoopField If Hotkey_Extension[%FunctionTmp%] = %GetKey% break FunctionTmp = FunctionTmp1 = } StringSplit, FunctionTmp, FunctionTmp, $ If FunctionTmp1 = muc_Error := 1 Else muc_Error := 1 } } If muc_Error = 1 { MsgBox, 48, %muc_ScriptName%, %lng_muc_HotkeyError% muc_Error = GuiControl, Choose, muc_TempDisableSound_tmp, 1 Goto, muc_sub_CheckIfSettingsChanged } } muc_TempDisableSound_old = %muc_TempDisableSound_tmp% GuiControlGet, muc_Device_tmp,, muc_Device If muc_Device_tmp <> %muc_Device_old% { muc_TempComp = MASTER,HEADPHONES,DIGITAL,LINE,MICROPHONE,SYNTH,CD,TELEPHONE,PCSPEAKER,WAVE,AUX,ANALOG,HEADPHONES,N/A muc_Components = Loop, Parse, muc_TempComp, `, { SoundGet, muc_Tmp, %A_LoopField%,, %muc_Device_tmp% if ErrorLevel = Mixer Doesn't Support This Component Type continue muc_Components = %muc_Components%|%A_LoopField% } StringTrimLeft, muc_Components, muc_Components, 1 GuiControl,,muc_Component, |%muc_Components% GuiControl,ChooseString, muc_Component, %muc_Component% } muc_Device_old = %muc_Device_tmp% Return SaveSettings_MusicControl: muc_Device_old = If muc_EnableOSD = 1 { SoundGet, muc_LastMaster, %muc_Component%, , %muc_Device% SoundGet, muc_LastMute, %muc_Component%, Mute, %muc_Device% muc_LastMaster := muc_LastMaster/4.9 } muc_TempDisableSound := muc_TempDisableSound_tmp If muc_TempDisableSound = %lng_None% muc_TempDisableSound = If muc_TempDisableSound = %lng_kbAlt% muc_TempDisableSound = Alt If muc_TempDisableSound = %lng_kbShift% muc_TempDisableSound = Shift If muc_TempDisableSound = %lng_kbCtrl% muc_TempDisableSound = Ctrl If muc_TempDisableSound = %lng_kbWin% muc_TempDisableSound = LWin If muc_TempDisableSound = %lng_Right% %lng_kbWin% muc_TempDisableSound = RWin func_HotkeyWrite( "muc_VolUp", ConfigFile, muc_ScriptName, "VolUp") func_HotkeyWrite( "muc_VolDown", ConfigFile, muc_ScriptName, "VolDown") func_HotkeyWrite( "muc_VolMute", ConfigFile, muc_ScriptName, "VolMute") func_HotkeyWrite( "muc_VolUp2", ConfigFile, muc_ScriptName, "VolUp2") func_HotkeyWrite( "muc_VolDown2", ConfigFile, muc_ScriptName, "VolDown2") func_HotkeyWrite( "muc_VolMute2", ConfigFile, muc_ScriptName, "VolMute2") func_HotkeyWrite( "muc_Prev", ConfigFile, muc_ScriptName, "Prev") func_HotkeyWrite( "muc_Next", ConfigFile, muc_ScriptName, "Next") func_HotkeyWrite( "muc_Pause", ConfigFile, muc_ScriptName, "Pause") func_HotkeyWrite( "muc_Rwd", ConfigFile, muc_ScriptName, "Rwd") func_HotkeyWrite( "muc_FFwd", ConfigFile, muc_ScriptName, "FFwd") func_HotkeyWrite( "muc_Up", ConfigFile, muc_ScriptName, "Up") func_HotkeyWrite( "muc_Down", ConfigFile, muc_ScriptName, "Down") func_HotkeyWrite( "muc_Stop", ConfigFile, muc_ScriptName, "Stop") func_HotkeyWrite( "muc_Play", ConfigFile, muc_ScriptName, "Play") IniWrite, %muc_EnableOSD%, %ConfigFile%, %muc_ScriptName%, OSD IniWrite, %muc_EnableSound%, %ConfigFile%, %muc_ScriptName%, Sound IniWrite, %muc_TempDisableSound%, %ConfigFile%, %muc_ScriptName%, TempDisableSoundKey IniWrite, %muc_Device%, %ConfigFile%, %muc_ScriptName%, Device IniWrite, %muc_Component%, %ConfigFile%, %muc_ScriptName%, Component IniWrite, %muc_VolAddSub%, %ConfigFile%, %muc_ScriptName%, VolumeIncrement IniWrite, %muc_UseWaveVolume%, %ConfigFile%, %muc_ScriptName%, UseWaveVolume IniWrite, %muc_CheckCompatibility%, %ConfigFile%, %muc_ScriptName%, CheckCompatibility IniWrite, %muc_LaunchPlayer%, %ConfigFile%, %muc_ScriptName%, LaunchPlayer Return CancelSettings_MusicControl: Return DoEnable_MusicControl: If muc_Component = muc_Component = MASTER Detecthiddenwindows, On IfWinNotExist, ahk_id %muc_GuiID% If muc_EnableOSD = 1 { muc_transparent = 150 muc_GuiID := GuiDefault("MusicControl") Gui, +Lastfound +Disabled +ToolWindow -Caption Gui, Add, pic, x0 y0 w205 h205 vmuc_OSDvpic, %A_ScriptDir%\extensions\Media\ac'tivAid_MusicControl_vol.gif ; Bild laden Gui, Add, pic, x0 y0 w205 h205 Hidden vmuc_OSDmpic, %A_ScriptDir%\extensions\Media\ac'tivAid_MusicControl_mute.gif ; Bild laden Gui, Color, 959595 muc_X = 12 Loop, 20 { Gui, Add, Pic, x%muc_X% y167 w10 h14 vmuc_Volume%A_Index%, %A_ScriptDir%\extensions\Media\ac'tivAid_MusicControl_vol2.gif muc_X := muc_X+9 } WinGet,muc_OSDid, ID WinSet, TransColor ,0000FF %muc_transparent% ; Transparenz setzen WinSet, ExStyle, +0x80020 ; Click-Through WinSet, AlwaysOnTop, On ; Immer im Vordergrund SoundGet, muc_LastMaster, %muc_Component%, , %muc_Device% SoundGet, muc_LastMute, %muc_Component%, Mute, %muc_Device% If muc_LastMute = On muc_LastMaster = 0 muc_LastMaster := muc_LastMaster/4.9 } func_HotkeyEnable( "muc_VolUp" ) func_HotkeyEnable( "muc_VolDown" ) func_HotkeyEnable( "muc_VolMute" ) func_HotkeyEnable( "muc_VolUp2" ) func_HotkeyEnable( "muc_VolDown2" ) func_HotkeyEnable( "muc_VolMute2" ) func_HotkeyEnable( "muc_Prev" ) func_HotkeyEnable( "muc_Next" ) func_HotkeyEnable( "muc_Pause" ) func_HotkeyEnable( "muc_Rwd" ) func_HotkeyEnable( "muc_FFwd" ) func_HotkeyEnable( "muc_Up" ) func_HotkeyEnable( "muc_Down" ) func_HotkeyEnable( "muc_Stop" ) func_HotkeyEnable( "muc_Play" ) If muc_EnableOSD = 1 SetTimer, muc_tim_VolOSD, 100 Return DoDisable_MusicControl: func_HotkeyDisable( "muc_VolUp" ) func_HotkeyDisable( "muc_VolDown" ) func_HotkeyDisable( "muc_VolMute" ) func_HotkeyDisable( "muc_VolUp2" ) func_HotkeyDisable( "muc_VolDown2" ) func_HotkeyDisable( "muc_VolMute2" ) func_HotkeyDisable( "muc_Prev" ) func_HotkeyDisable( "muc_Next" ) func_HotkeyDisable( "muc_Pause" ) func_HotkeyDisable( "muc_Rwd" ) func_HotkeyDisable( "muc_FFwd" ) func_HotkeyDisable( "muc_Up" ) func_HotkeyDisable( "muc_Down" ) func_HotkeyDisable( "muc_Stop" ) func_HotkeyDisable( "muc_Play" ) SetTimer, muc_tim_VolOSD, Off Return DefaultSettings_MusicControl: Return Update_MusicControl: IniDelete,%ConfigFile%, WinAmp IniRead, muc_NoMasterVol, %ConfigFile%, MusicControl, NoMasterVolume, 0 If muc_NoMasterVol = 1 IniWrite, WAVE, %ConfigFile%, %muc_ScriptName%, Component IniDelete, %ConfigFile%, MusicControl, NoMasterVolume Return ; ----------------------------------------------------------------------------- ; === Hotkeys ================================================================= ; ----------------------------------------------------------------------------- muc_VolUp: If A_OSVersion = WIN_VISTA ; Workaround für Vista { Send {Volume_Up} Return } SoundSet, 0, %muc_Component%, mute, %muc_Device% SoundSet, +%muc_VolAddSub%, %muc_Component%, , %muc_Device% ; Lautstärke Lauter muc_ForceOSD = 1 Gosub, muc_tim_VolOSD Return muc_VolDown: If A_OSVersion = WIN_VISTA ; Workaround für Vista { Send {Volume_Down} Return } SoundSet, 0, %muc_Component%, mute, %muc_Device% SoundSet, -%muc_VolAddSub%, %muc_Component%, , %muc_Device% ; Lautstärke Leiser muc_ForceOSD = 1 Gosub, muc_tim_VolOSD Return muc_VolMute: If A_OSVersion = WIN_VISTA ; Workaround für Vista { Send {Volume_Mute} Return } SoundSet, +1, %muc_Component%, mute, %muc_Device% ; Ton an/aus Return muc_Prev: ; Vorheriger Titel Detecthiddenwindows,On muc_UsedPlayers = 0 If (muc_DisableWinamp = 0 AND WinExist("ahk_class Winamp v1.x")) { PostMessage, 0x111,40044,,,ahk_class Winamp v1.x muc_UsedPlayers++ } If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 11 ), "Uint", muc_piT ) ; Play DllCall( VTable( muc_piT, 14 ), "Uint", muc_piT ) ; PreviousTrack Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) { Run, %muc_foobarPath%\foobar2000.exe /prev,,UseErrorLevel muc_UsedPlayers++ } If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18810,,,ahk_class WMPlayerApp PostMessage, 0x111,18810,,,ahk_class WMP Skin Host muc_UsedPlayers++ } If muc_UsedPlayers = 0 Send, {Media_Prev} return muc_Next: ; Nächster Titel Detecthiddenwindows,On muc_UsedPlayers = 0 If (muc_DisableWinamp = 0 AND WinExist("ahk_class Winamp v1.x")) { PostMessage, 0x111,40048,,,ahk_class Winamp v1.x muc_UsedPlayers++ } If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 11 ), "Uint", muc_piT ) ; Play DllCall( VTable( muc_piT, 9 ), "Uint", muc_piT ) ; NextTrack Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) { Run, %muc_foobarPath%\foobar2000.exe /next,,UseErrorLevel muc_UsedPlayers++ } If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18811,,,ahk_class WMPlayerApp PostMessage, 0x111,18811,,,ahk_class WMP Skin Host muc_UsedPlayers++ } If muc_UsedPlayers = 0 Send, {Media_Next} return muc_Pause: ; Pause/Play Detecthiddenwindows,On muc_UsedPlayers = 0 If (muc_DisableWinamp = 0 AND WinExist("ahk_class Winamp v1.x")) { PostMessage, 0x111,40046,,,ahk_class Winamp v1.x muc_UsedPlayers++ } If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 13 ), "Uint", muc_piT ) ; PlayPause Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) { Run, %muc_foobarPath%\foobar2000.exe /pause,,UseErrorLevel muc_UsedPlayers++ } If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18808,,,ahk_class WMPlayerApp PostMessage, 0x111,18808,,,ahk_class WMP Skin Host muc_UsedPlayers++ } If muc_UsedPlayers = 0 Send, {Media_Play_Pause} return muc_Rwd: ; Zurückspulen Detecthiddenwindows,On If muc_DisableWinamp = 0 PostMessage, 0x111,40144,,,ahk_class Winamp v1.x If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 40 ), "Uint", muc_piT, "UintP", muc_PlayerPos ) ; get_PlayerPosition muc_PlayerPos := muc_PlayerPos - 7 DllCall( VTable( muc_piT, 41 ), "Uint", muc_piT, "Uint", muc_PlayerPos ) ; set_PlayerPosition Release( muc_piT ) CoUninitialize() } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) Run, %muc_foobarPath%\foobar2000.exe /command:"Playback/Seek back by 10 seconds",,UseErrorLevel If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18812,,,ahk_class WMPlayerApp PostMessage, 0x111,18812,,,ahk_class WMP Skin Host } return muc_FFwd: ; Vorspulen Detecthiddenwindows,On If muc_DisableWinamp = 0 PostMessage, 0x111,40148,,,ahk_class Winamp v1.x If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 40 ), "Uint", muc_piT, "UintP", muc_PlayerPos ) ; get_PlayerPosition muc_PlayerPos := muc_PlayerPos + 7 DllCall( VTable( muc_piT, 41 ), "Uint", muc_piT, "Uint", muc_PlayerPos ) ; set_PlayerPosition Release( muc_piT ) CoUninitialize() } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) Run, %muc_foobarPath%\foobar2000.exe /command:"Playback/Seek ahead by 10 seconds",,UseErrorLevel If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18813,,,ahk_class WMPlayerApp PostMessage, 0x111,18813,,,ahk_class WMP Skin Host } return muc_Up: ; Winamp/iTunes Lauter Detecthiddenwindows,On If muc_UseWaveVolume = 1 { SoundSet, 0, WAVE, mute, %muc_Device% SoundSet, +%muc_VolAddSub%, WAVE, , %muc_Device% ; Wave-Lautstärke Lauter SoundSet, +%muc_VolAddSub%, SYNTH, , %muc_Device% ; Midi-Lautstärke Lauter Return } If (muc_DisableWinamp = 0 AND WinExist("ahk_class Winamp v1.x")) { Loop, % muc_VolAddSub PostMessage, 0x111,40058,,,ahk_class Winamp v1.x muc_UsedPlayers++ } If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 35 ), "Uint", muc_piT, "UintP", muc_PlayerVol ) ; get_SoundVolume muc_PlayerVol := muc_PlayerVol + muc_VolAddSub DllCall( VTable( muc_piT, 36 ), "Uint", muc_piT, "Uint", muc_PlayerVol ) ; set_SoundVolume Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) { Loop, % muc_VolAddSub Run, %muc_foobarPath%\foobar2000.exe /command:"Playback/Volume up",,UseErrorLevel muc_UsedPlayers++ } If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18815,,,ahk_class WMPlayerApp PostMessage, 0x111,18815,,,ahk_class WMP Skin Host muc_UsedPlayers++ } If muc_UsedPlayers = 0 Send, {Volume_Up} return muc_Down: ; Winamp/iTunes Leiser Detecthiddenwindows,On muc_UsedPlayers = 0 If muc_UseWaveVolume = 1 { SoundSet, 0, WAVE, mute, %muc_Device% SoundSet, -%muc_VolAddSub%, WAVE, , %muc_Device% ; Wave-Lautstärke Lauter SoundSet, -%muc_VolAddSub%, SYNTH, , %muc_Device% ; Midi-Lautstärke Lauter Return } If (muc_DisableWinamp = 0 AND WinExist("ahk_class Winamp v1.x")) { Loop, % muc_VolAddSub PostMessage, 0x111,40059,,,ahk_class Winamp v1.x muc_UsedPlayers++ } If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 35 ), "Uint", muc_piT, "UintP", muc_PlayerVol ) ; get_SoundVolume muc_PlayerVol := muc_PlayerVol - muc_VolAddSub DllCall( VTable( muc_piT, 36 ), "Uint", muc_piT, "Uint", muc_PlayerVol ) ; set_SoundVolume Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) { Loop, % muc_VolAddSub Run, %muc_foobarPath%\foobar2000.exe /command:"Playback/Volume down",,UseErrorLevel muc_UsedPlayers++ } If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18816,,,ahk_class WMPlayerApp PostMessage, 0x111,18816,,,ahk_class WMP Skin Host muc_UsedPlayers++ } If muc_UsedPlayers = 0 Send, {Volume_Down} return muc_Stop: ; Stop Detecthiddenwindows,On muc_UsedPlayers = 0 If (muc_DisableWinamp = 0 AND WinExist("ahk_class Winamp v1.x")) { PostMessage, 0x111,40047,,,ahk_class Winamp v1.x muc_UsedPlayers++ } If (muc_DisableItunes = 0 AND WinExist("ahk_class iTunes")) { CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 17 ), "Uint", muc_piT ) ; Stop Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } If (muc_DisableFoobar = 0 AND WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}")) { Run, %muc_foobarPath%\foobar2000.exe /stop,,UseErrorLevel muc_UsedPlayers++ } If (muc_DisableWMP = 0 AND (WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { PostMessage, 0x111,18809,,,ahk_class WMPlayerApp PostMessage, 0x111,18809,,,ahk_class WMP Skin Host muc_UsedPlayers++ } If muc_UsedPlayers = 0 Send, {Media_Stop} return muc_Play: ; Play Detecthiddenwindows,On muc_UsedPlayers = 0 If muc_DisableWinamp = 0 { IfWinNotExist, ahk_class Winamp v1.x { If (FileExist(muc_WinampPath "\winamp.exe") AND muc_LaunchPlayer = 1) { Run, %muc_WinampPath%\winamp.exe WinWait, ahk_class Winamp v1.x } } IfWinExist, ahk_class Winamp v1.x { If (!WinActive("ahk_class Winamp v1.x") AND muc_LaunchPlayer = 1) WinActivate, ahk_class Winamp v1.x PostMessage, 0x111,40045,,,ahk_class Winamp v1.x muc_UsedPlayers++ } } If muc_DisableItunes = 0 { IfWinNotExist, ahk_class iTunes { If (FileExist(muc_iTunesPath) AND muc_LaunchPlayer = 1) { Run, %muc_iTunesPath%,,UseErrorLevel If (ErrorLevel <> "ERROR") WinWait, ahk_class iTunes } } IfWinExist, ahk_class iTunes { If (!WinActive("ahk_class iTunes") AND muc_LaunchPlayer = 1) WinActivate, ahk_class iTunes CoInitialize() muc_CLSID_iTunesApp := "{DC0C2640-1415-4644-875C-6F4D769839BA}" muc_IID_IiTunes := "{9DD6680B-3EDC-40DB-A771-E6FE4832E34A}" muc_piT := CreateObject( muc_CLSID_iTunesApp, muc_IID_IiTunes ) DllCall( VTable( muc_piT, 11 ), "Uint", muc_piT ) ; Play Release( muc_piT ) CoUninitialize() muc_UsedPlayers++ } } If muc_DisableFoobar = 0 AND FileExist(muc_foobarPath "\foobar2000.exe")) { If (WinExist("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}") OR muc_LaunchPlayer = 1) { If (!WinActive("ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8}") AND muc_LaunchPlayer = 1) WinActivate, ahk_class {E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8} Run, %muc_foobarPath%\foobar2000.exe /play,,UseErrorLevel If (ErrorLevel <> "ERROR") muc_UsedPlayers++ } } If (muc_DisableWMP = 0 AND FileExist(muc_WMPPath)) { If (!WinExist("ahk_class WMPlayerApp") AND !WinExist("ahk_class WMP Skin Host") AND muc_LaunchPlayer = 1) { Run, %muc_WMPPath%,,UseErrorLevel If (ErrorLevel <> "ERROR") WinWait, ahk_class WMPlayerApp } If ((WinExist("ahk_class WMPlayerApp") OR WinExist("ahk_class WMP Skin Host"))) { If (!WinActive("ahk_class WMPlayerApp") AND muc_LaunchPlayer = 1) WinActivate, ahk_class WMPlayerApp If (!WinActive("ahk_class WMP Skin Host") AND muc_LaunchPlayer = 1) WinActivate, ahk_class WMP SkinHost PostMessage, 0x111,18808,,,ahk_class WMPlayerApp PostMessage, 0x111,18808,,,ahk_class WMP Skin Host muc_UsedPlayers++ } } If (muc_DisableMediaKeys = 0 AND muc_UsedPlayers = 0) { If muc_LaunchPlayer = 1 Send, {Launch_Media} Send, {Media_Play_Pause} } return ; ----------------------------------------------------------------------------- ; === Subroutines ============================================================= ; ----------------------------------------------------------------------------- muc_tim_VolOSD: Critical If LoadingFinished <> 1 Return SetControlDelay, -1 SetWinDelay, -1 SoundGet, muc_Master, %muc_Component%, , %muc_Device% SoundGet, muc_Mute, %muc_Component%, Mute, %muc_Device% If muc_Mute = On muc_Master = 0 muc_Master := muc_Master/4.9 if (muc_Master = muc_LastMaster AND muc_Mute = muc_LastMute AND muc_ForceOSD <> 1) Return ;FileAppend, `nStat: %muc_Master% - %muc_Mute%`n, C:\muc.log ;FileAppend, % "Opt: " muc_EnableOSD " - " GetKeyState(muc_TempDisableSound) "`n", C:\muc.log If (muc_EnableOSD = 1 AND GetKeyState(muc_TempDisableSound) <> 1) { ;FileAppend, MuDi: %muc_Mute% <> %muc_LastMute%`n, C:\muc.log If muc_Mute <> muc_LastMute { If muc_Mute = On { GuiControl,%GuiID_MusicControl%:Show, muc_OSDmpic } Else { GuiControl,%GuiID_MusicControl%:Hide, muc_OSDmpic } } ; Position berechnen muc_posY := A_ScreenHeight - (A_ScreenHeight / 4) - 105 muc_posX := A_ScreenWidth - (A_ScreenWidth / 2) - 102 If NOT func_isFullScreen() Gui, %GuiID_MusicControl%:Show, w205 h205 y%muc_posY% x%muc_posX% NA ; Symbol darstellen ;FileAppend, Loop: (%muc_Master%) , C:\muc.log Loop, 20 { If A_Index < %muc_Master% { If muc_VolumeG%A_Index% <> 1 GuiControl, %GuiID_MusicControl%:Show, muc_Volume%A_Index% muc_VolumeG%A_Index% = 1 } Else { If muc_VolumeG%A_Index% <> 0 GuiControl, %GuiID_MusicControl%:Hide, muc_Volume%A_Index% muc_VolumeG%A_Index% = 0 } } muc_transparent = 150 ; Anfangstransparenz WinSet, TransColor,0000FF %muc_transparent%, ahk_id %muc_OSDid% } If (muc_EnableSound = 1 AND GetKeyState(muc_TempDisableSound) <> 1 AND muc_Master <> muc_LastMaster) { SoundPlay,%A_ScriptDir%\extensions\Media\ac'tivAid_MusicControl_vol.wav } muc_LastMaster = %muc_Master% muc_LastMute = %muc_Mute% muc_ForceOSD = 0 ;FileAppend, `n- Timer ..., C:\muc.log Settimer, muc_tim_FadeOSD, 1500 muc_StartTicks = %A_TickCount% Return muc_tim_FadeOSD: ;FileAppend, OK %muc_Transparent%`n, C:\muc.log Settimer, muc_tim_FadeOSD, 5 muc_Ticks := (A_TickCount-1500-muc_StartTicks) / 500 muc_transparent := muc_transparent - muc_FadeSpeed * muc_Ticks ; Transparenz runterzählen if muc_transparent < 1 { Settimer, muc_tim_FadeOSD, Off Gui, %GuiID_MusicControl%:Hide Return } WinSet, TransColor,0000FF %muc_transparent%, ahk_id %muc_OSDid% ; Transparenz setzen Return