AutoHotkey Community

It is currently May 26th, 2012, 7:35 pm

All times are UTC [ DST ]




Post new topic Reply to topic  [ 38 posts ]  Go to page Previous  1, 2, 3  Next
Author Message
PostPosted: January 4th, 2009, 10:23 pm 
Hi!
I modded zzzTAG's latest version of the script and came up with this:

Code:
SetTitleMatchMode 2

; "CTRL + LEFT"  for previous
^Left::
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


; "CTRL + RIGHT"  for next
^Right::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + UP"  for pause
^UP::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + DOWN"  for info
^Down::
{
DetectHiddenWindows, On
SetTitleMatchMode 2
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
DetectHiddenWindows, Off
clipboard = %playing%`r`n
return
}


For my needs I removed the tray notification and added global hotkey for play/pause (Ctrl + UP). I've changed the info function (Ctrl + DOWN) so it doesn't show in tray either, but copies the song's artist and title to clipboard so you can paste it wherever you want.

Now playing: Eric Serra – Little Light of Love (End Titles version)
~

So the keys are:
ctrl + left - previous
ctrl + right - next
ctrl + up - play/pause
ctrl + down - info goes to clipboard

Hope somebody will find this useful!

PS. Any ideas how to get album's name?


Report this post
Top
  
Reply with quote  
PostPosted: January 5th, 2009, 6:27 am 
Offline

Joined: January 3rd, 2009, 11:11 am
Posts: 4
Sansana wrote:
Hi!
I modded zzzTAG's latest version of the script and came up with this:

Code:
SetTitleMatchMode 2

; "CTRL + LEFT"  for previous
^Left::
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


; "CTRL + RIGHT"  for next
^Right::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + UP"  for pause
^UP::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + DOWN"  for info
^Down::
{
DetectHiddenWindows, On
SetTitleMatchMode 2
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
DetectHiddenWindows, Off
clipboard = %playing%`r`n
return
}


For my needs I removed the tray notification and added global hotkey for play/pause (Ctrl + UP). I've changed the info function (Ctrl + DOWN) so it doesn't show in tray either, but copies the song's artist and title to clipboard so you can paste it wherever you want.

Now playing: Eric Serra – Little Light of Love (End Titles version)
~

So the keys are:
ctrl + left - previous
ctrl + right - next
ctrl + up - play/pause
ctrl + down - info goes to clipboard

Hope somebody will find this useful!

PS. Any ideas how to get album's name?


I took your modified script an added volume keys.

Code:
SetTitleMatchMode 2

; "CTRL + LEFT"  for previous
^Left::
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


; "CTRL + RIGHT"  for next
^Right::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + UP"  for pause
^UP::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + ALT + UP"  for volume up
^!Up::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{up}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + ALT + DOWN"  for volume down
^!Down::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{down}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + DOWN"  for info
^Down::
{
DetectHiddenWindows, On
SetTitleMatchMode 2
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
DetectHiddenWindows, Off
clipboard = %playing%`r`n
return
}


volume up: Ctrl + Alt + Up (Alternative AltGr + Up)
volume down: Ctrl + Alt + Down (Alternative AltGr + Down)


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: January 29th, 2009, 8:54 pm 
Here's a script i wrote for spotify. I've copied some code from this thread and from all over the forum, i also wrote some myself. It got some hotkeys, song notification, and so on. Look at the code or just try it out!

Btw this is my first script ever so it may not be the best. Feel free to do whatever you want with it.


Code:
SetTitleMatchMode 2
#WinActivateForce
#singleinstance force

#persistent
RegRead, SPATH, HKEY_CLASSES_ROOT, spotify\DefaultIcon,
StringGetPos, POS, SPATH, \spotify.exe
StringReplace, SPATH, SPATH, `,0 ,,A
StringReplace, SPATH, SPATH, ",,A

Run, %SPATH%



SetTimer, RefreshTrayTip, 1000
playingsave := ""
Gosub, RefreshTrayTip  ; Call it once to get it started right away.


SetTimer, RefreshTrayTip2, 1000
Gosub, RefreshTrayTip2  ; Call it once to get it started right away.


SetTimer, SpotifyExit, 5000
Gosub, SpotifyExit  ; Call it once to get it started right away.




Menu, Tray, NoStandard
Menu, tray, add, Show/Hide Spotify, spotify
Menu, tray, add
Menu, tray, add, Play/Pause, Playp  ; Creates a new menu item.
Menu, Tray, add, Next, l_defaultaction
Menu, Tray, Default, Next
Menu, Tray, Click, 1
Menu, tray, add, Previous, prev
Menu, tray, add
Menu, tray, add, Exit, Ex




{DetectHiddenWindows, Off
   Sleep, 1050
 WinWaitClose, Spotify, , 15
 DetectHiddenWindows, On
RegExMatch(TrayIcons("spotify.exe"), "(?<=idn: )\d+", idn) ; This finds out the ID of the Tray Icon of "yourapp.exe"
HideTrayIcon(idn) ; This hides that icon :D
}
return



l_defaultaction:
if tray_clicks > 0 ; SetTimer already started, so we log the keypress instead.
{
   tray_clicks += 1
   return
}
; Otherwise, this is the first press of a new series. Set count to 1 and start
; the timer:
tray_clicks = 1
SetTimer, tray_clicks_check, 400 ; Wait for more presses within a 400 millisecond window.
return

tray_clicks_check:
SetTimer, tray_clicks_check, off
if tray_clicks = 1 ; The key was pressed once.
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
}
else if tray_clicks = 2 ; The key was pressed twice.
{
WinShow, ahk_Class SpotifyMainWindow
WinActivate, ahk_Class SpotifyMainWindow
}
else if tray_clicks > 2
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
}
; Regardless of which action above was triggered, reset the count to
; prepare for the next series of presses:
tray_clicks = 0
return


; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




/*
WM_MOUSEMOVE   = 0x0200
WM_LBUTTONDOWN   = 0x0201
WM_LBUTTONUP   = 0x0202
WM_LBUTTONDBLCLK= 0x0203
WM_RBUTTONDOWN   = 0x0204
WM_RBUTTONUP   = 0x0205
WM_RBUTTONDBLCLK= 0x0206
WM_MBUTTONDOWN   = 0x0207
WM_MBUTTONUP   = 0x0208
WM_MBUTTONDBLCLK= 0x0209

PostMessage, nMsg, uID, WM_RBUTTONDOWN, , ahk_id %hWnd%
PostMessage, nMsg, uID, WM_RBUTTONUP  , , ahk_id %hWnd%
*/















TrayIcons(sExeName = "spotify.exe")
{
   WinGet,   pidTaskbar, PID, ahk_class Shell_TrayWnd
   hProc:=   DllCall("OpenProcess", "Uint", 0x38, "int", 0, "Uint", pidTaskbar)
   pProc:=   DllCall("VirtualAllocEx", "Uint", hProc, "Uint", 0, "Uint", 32, "Uint", 0x1000, "Uint", 0x4)
   idxTB:=   GetTrayBar()
      SendMessage, 0x418, 0, 0, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_BUTTONCOUNT
   Loop,   %ErrorLevel%
   {
      SendMessage, 0x417, A_Index-1, pProc, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_GETBUTTON
      VarSetCapacity(btn,32,0), VarSetCapacity(nfo,32,0)
      DllCall("ReadProcessMemory", "Uint", hProc, "Uint", pProc, "Uint", &btn, "Uint", 32, "Uint", 0)
         iBitmap   := NumGet(btn, 0)
         idn   := NumGet(btn, 4)
         Statyle := NumGet(btn, 8)
      If   dwData   := NumGet(btn,12)
         iString   := NumGet(btn,16)
      Else   dwData   := NumGet(btn,16,"int64"), iString:=NumGet(btn,24,"int64")
      DllCall("ReadProcessMemory", "Uint", hProc, "Uint", dwData, "Uint", &nfo, "Uint", 32, "Uint", 0)
      If   NumGet(btn,12)
         hWnd   := NumGet(nfo, 0)
      ,   uID   := NumGet(nfo, 4)
      ,   nMsg   := NumGet(nfo, 8)
      ,   hIcon   := NumGet(nfo,20)
      Else   hWnd   := NumGet(nfo, 0,"int64"), uID:=NumGet(nfo, 8), nMsg:=NumGet(nfo,12)
      WinGet, pid, PID,              ahk_id %hWnd%
      WinGet, sProcess, ProcessName, ahk_id %hWnd%
      WinGetClass, sClass,           ahk_id %hWnd%
      If !sExeName || (sExeName = sProcess) || (sExeName = pid)
         VarSetCapacity(sTooltip,128), VarSetCapacity(wTooltip,128*2)
      ,   DllCall("ReadProcessMemory", "Uint", hProc, "Uint", iString, "Uint", &wTooltip, "Uint", 128*2, "Uint", 0)
      ,   DllCall("WideCharToMultiByte", "Uint", 0, "Uint", 0, "str", wTooltip, "int", -1, "str", sTooltip, "int", 128, "Uint", 0, "Uint", 0)
      ,   sTrayIcons .= "idx: " . A_Index-1 . " | idn: " . idn . " | Pid: " . pid . " | uID: " . uID . " | MessageID: " . nMsg . " | hWnd: " . hWnd . " | Class: " . sClass . " | Process: " . sProcess . "`n" . "   | Tooltip: " . sTooltip . "`n"
   }
   DllCall("VirtualFreeEx", "Uint", hProc, "Uint", pProc, "Uint", 0, "Uint", 0x8000)
   DllCall("CloseHandle", "Uint", hProc)
   Return   sTrayIcons
}

RemoveTrayIcon(hWnd, uID, nMsg = 0, hIcon = 0, nRemove = 2)
{
   NumPut(VarSetCapacity(ni,444,0), ni)
   NumPut(hWnd , ni, 4)
   NumPut(uID  , ni, 8)
   NumPut(1|2|4, ni,12)
   NumPut(nMsg , ni,16)
   NumPut(hIcon, ni,20)
   Return   DllCall("shell32\Shell_NotifyIconA", "Uint", nRemove, "Uint", &ni)
}

HideTrayIcon(idn, bHide = True)
{
   idxTB := GetTrayBar()
   SendMessage, 0x404, idn, bHide, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_HIDEBUTTON
   SendMessage, 0x1A, 0, 0, , ahk_class Shell_TrayWnd
}

DeleteTrayIcon(idx)
{
   idxTB := GetTrayBar()
   SendMessage, 0x416, idx - 1, 0, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_DELETEBUTTON
   SendMessage, 0x1A, 0, 0, , ahk_class Shell_TrayWnd
}

MoveTrayIcon(idxOld, idxNew)
{
   idxTB := GetTrayBar()
   SendMessage, 0x452, idxOld - 1, idxNew - 1, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd ; TB_MOVEBUTTON
}

GetTrayBar()
{
   ControlGet, hParent, hWnd,, TrayNotifyWnd1  , ahk_class Shell_TrayWnd
   ControlGet, hChild , hWnd,, ToolbarWindow321, ahk_id %hParent%
   Loop
   {
      ControlGet, hWnd, hWnd,, ToolbarWindow32%A_Index%, ahk_class Shell_TrayWnd
      If  Not   hWnd
         Break
      Else If   hWnd = %hChild%
      {
         idxTB := A_Index
         Break
      }
   }
   Return   idxTB
}

Return









; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;














; "CTRL + B"  for previous
^b::
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


; "CTRL + N"  for next
^n::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + UP"  for info
^Up::
{
DetectHiddenWindows, On
SetTitleMatchMode 2
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
TrayTip, Now playing:, %playing%., 10 , 16
DetectHiddenWindows, Off
return
}

; "CTRL + ALT + HOME"  for pause
^!HOME::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + DOWN"  To show/hide spotify window
^DOWN::
{
DetectHiddenWindows, On
ifWinNotActive, ahk_Class SpotifyMainWindow
{
WinShow, ahk_Class SpotifyMainWindow
WinActivate, ahk_Class SpotifyMainWindow
}
else ifWinActive, ahk_Class SpotifyMainWindow
WinClose, ahk_Class SpotifyMainWindow
DetectHiddenWindows, Off
return
}


; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


RefreshTrayTip:
DetectHiddenWindows, On
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
if(playing != playingsave) {
  TrayTip, Now playing:, %playing%, 10 , 16
  SetTimer, RemoveTrayTip, -5000
}
playingsave := playing
return

RemoveTrayTip:
    TrayTip
    return

RefreshTrayTip2:
WinGetTitle, title, ahk_class SpotifyMainWindow
Menu, Tray, Tip, %title%
return




Playp:
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}


Ex:
process, close, spotify.exe
ExitApp
return


next:
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

prev:
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


spotify:
{
DetectHiddenWindows, Off
ifWinNotExist, ahk_Class SpotifyMainWindow
{
WinShow, ahk_Class SpotifyMainWindow
}
else ifWinExist, ahk_Class SpotifyMainWindow
WinClose, ahk_Class SpotifyMainWindow
return
}

SpotifyExit:
 Sleep, 2000
DetectHiddenWindows, On
IfWinNotExist, ahk_class SpotifyMainWindow
ExitApp
Return


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: January 30th, 2009, 9:15 pm 
Offline

Joined: January 3rd, 2009, 11:11 am
Posts: 4
chripopper wrote:
Here's a script i wrote for spotify. I've copied some code from this thread and from all over the forum, i also wrote some myself. It got some hotkeys, song notification, and so on. Look at the code or just try it out!

Btw this is my first script ever so it may not be the best. Feel free to do whatever you want with it.


Code:
SetTitleMatchMode 2
#WinActivateForce
#singleinstance force

#persistent
RegRead, SPATH, HKEY_CLASSES_ROOT, spotify\DefaultIcon,
StringGetPos, POS, SPATH, \spotify.exe
StringReplace, SPATH, SPATH, `,0 ,,A
StringReplace, SPATH, SPATH, ",,A

Run, %SPATH%



SetTimer, RefreshTrayTip, 1000
playingsave := ""
Gosub, RefreshTrayTip  ; Call it once to get it started right away.


SetTimer, RefreshTrayTip2, 1000
Gosub, RefreshTrayTip2  ; Call it once to get it started right away.


SetTimer, SpotifyExit, 5000
Gosub, SpotifyExit  ; Call it once to get it started right away.




Menu, Tray, NoStandard
Menu, tray, add, Show/Hide Spotify, spotify
Menu, tray, add
Menu, tray, add, Play/Pause, Playp  ; Creates a new menu item.
Menu, Tray, add, Next, l_defaultaction
Menu, Tray, Default, Next
Menu, Tray, Click, 1
Menu, tray, add, Previous, prev
Menu, tray, add
Menu, tray, add, Exit, Ex




{DetectHiddenWindows, Off
   Sleep, 1050
 WinWaitClose, Spotify, , 15
 DetectHiddenWindows, On
RegExMatch(TrayIcons("spotify.exe"), "(?<=idn: )\d+", idn) ; This finds out the ID of the Tray Icon of "yourapp.exe"
HideTrayIcon(idn) ; This hides that icon :D
}
return



l_defaultaction:
if tray_clicks > 0 ; SetTimer already started, so we log the keypress instead.
{
   tray_clicks += 1
   return
}
; Otherwise, this is the first press of a new series. Set count to 1 and start
; the timer:
tray_clicks = 1
SetTimer, tray_clicks_check, 400 ; Wait for more presses within a 400 millisecond window.
return

tray_clicks_check:
SetTimer, tray_clicks_check, off
if tray_clicks = 1 ; The key was pressed once.
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
}
else if tray_clicks = 2 ; The key was pressed twice.
{
WinShow, ahk_Class SpotifyMainWindow
WinActivate, ahk_Class SpotifyMainWindow
}
else if tray_clicks > 2
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
}
; Regardless of which action above was triggered, reset the count to
; prepare for the next series of presses:
tray_clicks = 0
return


; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;




/*
WM_MOUSEMOVE   = 0x0200
WM_LBUTTONDOWN   = 0x0201
WM_LBUTTONUP   = 0x0202
WM_LBUTTONDBLCLK= 0x0203
WM_RBUTTONDOWN   = 0x0204
WM_RBUTTONUP   = 0x0205
WM_RBUTTONDBLCLK= 0x0206
WM_MBUTTONDOWN   = 0x0207
WM_MBUTTONUP   = 0x0208
WM_MBUTTONDBLCLK= 0x0209

PostMessage, nMsg, uID, WM_RBUTTONDOWN, , ahk_id %hWnd%
PostMessage, nMsg, uID, WM_RBUTTONUP  , , ahk_id %hWnd%
*/















TrayIcons(sExeName = "spotify.exe")
{
   WinGet,   pidTaskbar, PID, ahk_class Shell_TrayWnd
   hProc:=   DllCall("OpenProcess", "Uint", 0x38, "int", 0, "Uint", pidTaskbar)
   pProc:=   DllCall("VirtualAllocEx", "Uint", hProc, "Uint", 0, "Uint", 32, "Uint", 0x1000, "Uint", 0x4)
   idxTB:=   GetTrayBar()
      SendMessage, 0x418, 0, 0, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_BUTTONCOUNT
   Loop,   %ErrorLevel%
   {
      SendMessage, 0x417, A_Index-1, pProc, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_GETBUTTON
      VarSetCapacity(btn,32,0), VarSetCapacity(nfo,32,0)
      DllCall("ReadProcessMemory", "Uint", hProc, "Uint", pProc, "Uint", &btn, "Uint", 32, "Uint", 0)
         iBitmap   := NumGet(btn, 0)
         idn   := NumGet(btn, 4)
         Statyle := NumGet(btn, 8)
      If   dwData   := NumGet(btn,12)
         iString   := NumGet(btn,16)
      Else   dwData   := NumGet(btn,16,"int64"), iString:=NumGet(btn,24,"int64")
      DllCall("ReadProcessMemory", "Uint", hProc, "Uint", dwData, "Uint", &nfo, "Uint", 32, "Uint", 0)
      If   NumGet(btn,12)
         hWnd   := NumGet(nfo, 0)
      ,   uID   := NumGet(nfo, 4)
      ,   nMsg   := NumGet(nfo, 8)
      ,   hIcon   := NumGet(nfo,20)
      Else   hWnd   := NumGet(nfo, 0,"int64"), uID:=NumGet(nfo, 8), nMsg:=NumGet(nfo,12)
      WinGet, pid, PID,              ahk_id %hWnd%
      WinGet, sProcess, ProcessName, ahk_id %hWnd%
      WinGetClass, sClass,           ahk_id %hWnd%
      If !sExeName || (sExeName = sProcess) || (sExeName = pid)
         VarSetCapacity(sTooltip,128), VarSetCapacity(wTooltip,128*2)
      ,   DllCall("ReadProcessMemory", "Uint", hProc, "Uint", iString, "Uint", &wTooltip, "Uint", 128*2, "Uint", 0)
      ,   DllCall("WideCharToMultiByte", "Uint", 0, "Uint", 0, "str", wTooltip, "int", -1, "str", sTooltip, "int", 128, "Uint", 0, "Uint", 0)
      ,   sTrayIcons .= "idx: " . A_Index-1 . " | idn: " . idn . " | Pid: " . pid . " | uID: " . uID . " | MessageID: " . nMsg . " | hWnd: " . hWnd . " | Class: " . sClass . " | Process: " . sProcess . "`n" . "   | Tooltip: " . sTooltip . "`n"
   }
   DllCall("VirtualFreeEx", "Uint", hProc, "Uint", pProc, "Uint", 0, "Uint", 0x8000)
   DllCall("CloseHandle", "Uint", hProc)
   Return   sTrayIcons
}

RemoveTrayIcon(hWnd, uID, nMsg = 0, hIcon = 0, nRemove = 2)
{
   NumPut(VarSetCapacity(ni,444,0), ni)
   NumPut(hWnd , ni, 4)
   NumPut(uID  , ni, 8)
   NumPut(1|2|4, ni,12)
   NumPut(nMsg , ni,16)
   NumPut(hIcon, ni,20)
   Return   DllCall("shell32\Shell_NotifyIconA", "Uint", nRemove, "Uint", &ni)
}

HideTrayIcon(idn, bHide = True)
{
   idxTB := GetTrayBar()
   SendMessage, 0x404, idn, bHide, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_HIDEBUTTON
   SendMessage, 0x1A, 0, 0, , ahk_class Shell_TrayWnd
}

DeleteTrayIcon(idx)
{
   idxTB := GetTrayBar()
   SendMessage, 0x416, idx - 1, 0, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd   ; TB_DELETEBUTTON
   SendMessage, 0x1A, 0, 0, , ahk_class Shell_TrayWnd
}

MoveTrayIcon(idxOld, idxNew)
{
   idxTB := GetTrayBar()
   SendMessage, 0x452, idxOld - 1, idxNew - 1, ToolbarWindow32%idxTB%, ahk_class Shell_TrayWnd ; TB_MOVEBUTTON
}

GetTrayBar()
{
   ControlGet, hParent, hWnd,, TrayNotifyWnd1  , ahk_class Shell_TrayWnd
   ControlGet, hChild , hWnd,, ToolbarWindow321, ahk_id %hParent%
   Loop
   {
      ControlGet, hWnd, hWnd,, ToolbarWindow32%A_Index%, ahk_class Shell_TrayWnd
      If  Not   hWnd
         Break
      Else If   hWnd = %hChild%
      {
         idxTB := A_Index
         Break
      }
   }
   Return   idxTB
}

Return









; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;














; "CTRL + B"  for previous
^b::
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


; "CTRL + N"  for next
^n::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + UP"  for info
^Up::
{
DetectHiddenWindows, On
SetTitleMatchMode 2
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
TrayTip, Now playing:, %playing%., 10 , 16
DetectHiddenWindows, Off
return
}

; "CTRL + ALT + HOME"  for pause
^!HOME::
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

; "CTRL + DOWN"  To show/hide spotify window
^DOWN::
{
DetectHiddenWindows, On
ifWinNotActive, ahk_Class SpotifyMainWindow
{
WinShow, ahk_Class SpotifyMainWindow
WinActivate, ahk_Class SpotifyMainWindow
}
else ifWinActive, ahk_Class SpotifyMainWindow
WinClose, ahk_Class SpotifyMainWindow
DetectHiddenWindows, Off
return
}


; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


RefreshTrayTip:
DetectHiddenWindows, On
WinGetTitle, now_playing, ahk_class SpotifyMainWindow
StringTrimLeft, playing, now_playing, 10
if(playing != playingsave) {
  TrayTip, Now playing:, %playing%, 10 , 16
  SetTimer, RemoveTrayTip, -5000
}
playingsave := playing
return

RemoveTrayTip:
    TrayTip
    return

RefreshTrayTip2:
WinGetTitle, title, ahk_class SpotifyMainWindow
Menu, Tray, Tip, %title%
return




Playp:
{
DetectHiddenWindows, On
ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}


Ex:
process, close, spotify.exe
ExitApp
return


next:
{
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return
}

prev:
DetectHiddenWindows, On
ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
DetectHiddenWindows, Off
return


spotify:
{
DetectHiddenWindows, Off
ifWinNotExist, ahk_Class SpotifyMainWindow
{
WinShow, ahk_Class SpotifyMainWindow
}
else ifWinExist, ahk_Class SpotifyMainWindow
WinClose, ahk_Class SpotifyMainWindow
return
}

SpotifyExit:
 Sleep, 2000
DetectHiddenWindows, On
IfWinNotExist, ahk_class SpotifyMainWindow
ExitApp
Return

Looks good, but is it possible to do so the info disappear when you hit CTRL + UP again?


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: January 31st, 2009, 2:21 am 
Dunno, but as you can see i made a timer that removes it after 5 seconds, change it if you want. Regarding the remove of song notification with ctrl+up, I will take a look at it tomorrow when im not so drunk :D

Thanks btw!


Report this post
Top
  
Reply with quote  
 Post subject:
PostPosted: February 2nd, 2009, 10:50 am 
Offline

Joined: September 23rd, 2005, 8:18 pm
Posts: 55
Is there anyway to retrive the album cover from spotify?


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 23rd, 2009, 9:44 pm 
Phoenix wrote:
Is there anyway to retrive the album cover from spotify?


I don't think so, but I could be wrong. I think I read somewhere that a API is in the making.. But I'm unsure what functions will be provided.


Report this post
Top
  
Reply with quote  
PostPosted: February 28th, 2009, 12:00 am 
Yeah, i could be really really stupid now, but I thought I'd might ask anyway. I've created the script I wanted, and it works great, but is there a way i can make it automatically start when i fire up Spotify? Like something i can add in the shortcut preferences? Would be great if that was the case...


Report this post
Top
  
Reply with quote  
PostPosted: March 14th, 2009, 12:50 pm 
drue wrote:
Yeah, i could be really really stupid now, but I thought I'd might ask anyway. I've created the script I wanted, and it works great, but is there a way i can make it automatically start when i fire up Spotify? Like something i can add in the shortcut preferences? Would be great if that was the case...


Zawaq's script launches spotify if it's not running , just look and see if you can find anything. Which means you can put it in spotifys directory, reassign shortcuts to that program and it will launch spotify with hotkeys.


Report this post
Top
  
Reply with quote  
PostPosted: March 15th, 2009, 1:09 pm 
Offline

Joined: January 3rd, 2009, 11:11 am
Posts: 4
ToJa92 wrote:
drue wrote:
Yeah, i could be really really stupid now, but I thought I'd might ask anyway. I've created the script I wanted, and it works great, but is there a way i can make it automatically start when i fire up Spotify? Like something i can add in the shortcut preferences? Would be great if that was the case...


Zawaq's script launches spotify if it's not running , just look and see if you can find anything. Which means you can put it in spotifys directory, reassign shortcuts to that program and it will launch spotify with hotkeys.


My script? No, it's chripopper's script. 8)


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: May 8th, 2009, 4:49 pm 
Offline

Joined: November 21st, 2008, 12:09 pm
Posts: 2
chripopper wrote:
Here's a script i wrote for spotify. I've copied some code from this thread and from all over the forum, i also wrote some myself. It got some hotkeys, song notification, and so on. Look at the code or just try it out! (...)

Works well for me, thank you very much! :)

I would be interesting to make it work with snarl to have bigger, prettier, and more customizable notifications, but I don't know if this is possible or how hard it would be.
Example:
Image

NB: there's also Toastify, a dedicated app, that does global shortcuts and notifications for Spotify (requires .net 3.5): http://toastify.codeplex.com/


Report this post
Top
 Profile  
Reply with quote  
PostPosted: May 14th, 2009, 6:54 pm 
Offline

Joined: May 14th, 2009, 6:47 pm
Posts: 5
Thought maybe there were more people than me using both iTunes and Spotify as a media player. So I made a quite simple script controlling both without having to many hotkeys.

Control+shift+s Sets Spotify as the active media player
Control+shift+i Sets iTunes as the active media player

Control+Alt+Right Next Song
Control+Alt+Left Previous Song
Control+Alt+Up Volume Up
Control+Alt+Down Volume Down
Control+Alt+Space Play/Mute

Control+shift+a Runs/Activates/Minimizes media player

Code:
SetTitleMatchMode 2

^+i::
FileDelete, %ProgramFiles%\AutoHotkey\activeplayer.mvd
FileAppend, i, %ProgramFiles%\AutoHotkey\activeplayer.mvd
TrayTip, Active Media Player:, iTunes
SetTimer, RemoveTrayTip, 1000
return

^+s::
FileDelete, %ProgramFiles%\AutoHotkey\activeplayer.mvd
FileAppend, s, %ProgramFiles%\AutoHotkey\activeplayer.mvd
TrayTip, Active Media Player:, Spotify
SetTimer, RemoveTrayTip, 1000
return


^!right:: ; Control+Alt+Right : Next Song
;---------------------------------------------------------------------------
FileRead, ActivePlayer, %ProgramFiles%\AutoHotkey\activeplayer.mvd

If (ActivePlayer = "s") ; For Spotify
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{Right}, ahk_class SpotifyMainWindow
   DetectHiddenWindows, Off
   return
}
Else If (ActivePlayer = "i") ; For iTunes
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{right}, iTunes ahk_class iTunes
   DetectHiddenWindows, Off
   return
}
return


^!left:: ; Control+Alt+Left : Previous Song
;---------------------------------------------------------------------------
FileRead, ActivePlayer, %ProgramFiles%\AutoHotkey\activeplayer.mvd

If (ActivePlayer = "s") ; For Spotify
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{Left}, ahk_class SpotifyMainWindow
   DetectHiddenWindows, Off
   return
}
Else If (ActivePlayer = "i") ; For iTunes
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{left}, iTunes ahk_class iTunes
   DetectHiddenWindows, Off
   return
}
return



^!up:: ; Control+Alt+Up : Volume Up
;---------------------------------------------------------------------------
FileRead, ActivePlayer, %ProgramFiles%\AutoHotkey\activeplayer.mvd

If (ActivePlayer = "s") ; For Spotify
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{up}, ahk_class SpotifyMainWindow
   DetectHiddenWindows, Off
   return
}
Else If (ActivePlayer = "i") ; For iTunes
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{up}, iTunes ahk_class iTunes
   DetectHiddenWindows, Off
   return
}
return



^!down:: ; Control+Alt+Down : Volume Down
;---------------------------------------------------------------------------
FileRead, ActivePlayer, %ProgramFiles%\AutoHotkey\activeplayer.mvd

If (ActivePlayer = "s") ; For Spotify
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{down}, ahk_class SpotifyMainWindow
   DetectHiddenWindows, Off
   return
}
Else If (ActivePlayer = "i") ; For iTunes
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, ^{down}, iTunes ahk_class iTunes
   DetectHiddenWindows, Off
   return
}
return



^!space:: ; Control+Alt+Space : Play/Pause
;---------------------------------------------------------------------------
FileRead, ActivePlayer, %ProgramFiles%\AutoHotkey\activeplayer.mvd

If (ActivePlayer = "s") ; For Spotify
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, {space}, ahk_class SpotifyMainWindow
   DetectHiddenWindows, Off
   return
}
Else If (ActivePlayer = "i") ; For iTunes
{
   DetectHiddenWindows, On
   ControlSend, ahk_parent, {space}, iTunes ahk_class iTunes
   DetectHiddenWindows, Off
   return
}
return


^+a:: ; Control+Shift+A : Run/Activate/Minimize active media player
;---------------------------------------------------------------------------
FileRead, ActivePlayer, %ProgramFiles%\AutoHotkey\activeplayer.mvd

If (ActivePlayer = "s") ; For Spotify
{
   IfWinNotExist, ahk_class SpotifyMainWindow
   {
      Run %ProgramFiles%\Spotify\Spotify.exe  ;launch program
      return
   }
   IfWinExist, ahk_class SpotifyMainWindow ; toggle minimize/restore
   {
      IfWinNotActive ; restores window
      WinActivate
      Else
      WinMinimize ; minimizes windows
      return
   }
}

Else If (ActivePlayer = "i") ; For iTunes
{
   IfWinNotExist, ahk_class iTunes
   {
      Run %ProgramFiles%\iTunes\iTunes.exe  ;launch program
      return
   }
   IfWinExist, ahk_class iTunes ; toggle minimize/restore
   {
      IfWinNotActive ; restores window
      WinActivate
      Else
      WinMinimize ; minimizes windows
      return
   }
}
return


RemoveTrayTip:
SetTimer, RemoveTrayTip, Off
TrayTip
return



hope you like it


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: May 16th, 2009, 8:26 pm 
Offline

Joined: November 21st, 2008, 12:09 pm
Posts: 2
norz wrote:
I would be interesting to make it work with snarl to have bigger, prettier, and more customizable notifications, but I don't know if this is possible or how hard it would be.
Example:
Image

Growl is now also available for Windows:
http://www.growlforwindows.com/gfw/
I don't know which one will be the best in the coming years though.


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 19th, 2009, 4:41 am 
Offline

Joined: September 12th, 2009, 7:40 pm
Posts: 16
Hi,
If you are interested in getting album art and album name into your notification, you can use the last.fm api

for example:
http://ws.audioscrobbler.com/2.0/?metho ... rack=creep

I've used it in my script:
http://www.autohotkey.com/forum/viewtopic.php?t=49002


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: September 26th, 2009, 10:09 pm 
I wrote a small script that adds the currently playing song on Spotify to the defined playlist by the hotkey. Feel free to make it better!

Code:
^+F12::
{      
   playlist_number = 1 ;Playlist number from the top
   
   SetDefaultMouseSpeed, 0
   CoordMode, Mouse, Screen
   MouseGetPos, original_mouse_x, original_mouse_y
   WinGetActiveTitle, original_window_title
   
   ;Spotify in taskbar
   IfWinExist, ahk_class SpotifyMainWindow
   {
      WinActivate, ahk_class SpotifyMainWindow
      WinWaitActive, ahk_class SpotifyMainWindow
      add_song()
      WinMinimize, ahk_class SpotifyMainWindow

      MouseMove, original_mouse_x, original_mouse_y
      WinActivate, %original_window_title%
      
      return
   }
   
   ;Spotify in traybar
   DetectHiddenWindows, On
   IfWinExist, ahk_class SpotifyMainWindow
   {
      WinRestore, ahk_class SpotifyMainWindow
      WinActivate, ahk_class SpotifyMainWindow
      WinWaitActive, ahk_class SpotifyMainWindow
      add_song()
      WinClose, ahk_class SpotifyMainWindow
      
      MouseMove, original_mouse_x, original_mouse_y
      WinActivate, %original_window_title%
      
      return
   }
   
   ;Spotify on top
   add_song()
   {
      WinGetPos, X, Y, Width, Height, ahk_class SpotifyMainWindow
      MouseClick, right, X+50, Y+Height-70
      Sleep, 50
      ControlSend, ahk_parent, {DOWN}{DOWN}{DOWN}{RIGHT}, ahk_class SpotifyMainWindow
      
      x = 1
      While x < playlist_number
      {
         x++
         ControlSend, ahk_parent, {DOWN}, ahk_class SpotifyMainWindow
      }
      ControlSend, ahk_parent, {ENTER}, ahk_class SpotifyMainWindow
      Sleep, 50
   }
}


Report this post
Top
  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 38 posts ]  Go to page Previous  1, 2, 3  Next

All times are UTC [ DST ]


Who is online

Users browsing this forum: dmg, krajan, over21, RaptorX and 65 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group