Find all our projects in development below.
All source code is GNU General Public License (GPL)
Browsing MainMod.bas (7.57 KB)
Attribute VB_Name = "MainMod"
Private Const GWL_WNDPROC = (-4)
Private Const WM_HOTKEY = &H312
Private AppWnd As Long
Public Const AppRegRoot = "Software\Winamp Hotkey Win2K\"
Private Const KEY_F1 = 112
Private Const KEY_F2 = 113
Private Const KEY_F3 = 114
Private Const KEY_F4 = 115
Private Const KEY_F5 = 116
Private Const KEY_F6 = 117
Private Const KEY_F7 = 118
Private Const KEY_F8 = 119
Private Const KEY_F9 = 120
Private Const KEY_F10 = 121
Private Const KEY_F11 = 122
Private Const KEY_F12 = 123
Private Declare Function GlobalAddAtom Lib "kernel32" Alias "GlobalAddAtomA" (ByVal lpString As String) As Integer
Private Declare Function GlobalDeleteAtom Lib "kernel32" (ByVal nAtom As Integer) As Integer
Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
Private Const MOD_ALT = &H1
Private Const MOD_CONTROL = &H2
Private Const MOD_SHIFT = &H4
Private Const MOD_WIN = &H8
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private PrevWindowProc As Long
Private iAtom_PlayPauseBtn As Long
Private iAtom_StopBtn As Long
Private iAtom_NextBtn As Long
Private iAtom_PreviousBtn As Long
Private iAtom_FForwardBtn As Long
Private iAtom_FBackwardBtn As Long
Private iAtom_ToggleRepeatBtn As Long
Private iAtom_ToggleShuffleBtn As Long
Private iAtom_SaveSongTitleBtn As Long
Private iAtom_BackwardHotkey As Long
Private iAtom_ForwardHotkey As Long
Private iAtom_VolUpHotkey As Long
Private iAtom_VolDownHotkey As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Function IsCompatible() As Boolean
Dim verinfo As OSVERSIONINFO
verinfo.dwOSVersionInfoSize = Len(verinfo)
GetVersionEx verinfo
If verinfo.dwMajorVersion >= 5 Then
IsCompatible = True
Else
IsCompatible = False
End If
End Function
Sub Main()
If App.PrevInstance Then
MsgBox "Winamp Hotkey Win2K/XP Edition is already running.", vbInformation
End
End If
If IsCompatible = False Then
MsgBox "Winamp Hotkey Win2K/XP Edition is not compatible with earlier operating systems.", vbInformation
End
End If
SplashForm.Show
AppWnd = MainForm.hWnd
iAtom_PlayPauseBtn = GlobalAddAtom("PlayPauseBtn Hotkey")
RegisterHotKey AppWnd, iAtom_PlayPauseBtn, MOD_SHIFT, KEY_F1
iAtom_StopBtn = GlobalAddAtom("StopBtn Hotkey")
RegisterHotKey AppWnd, iAtom_StopBtn, MOD_SHIFT, KEY_F2
iAtom_NextBtn = GlobalAddAtom("NextBtn Hotkey")
RegisterHotKey AppWnd, iAtom_NextBtn, MOD_SHIFT, KEY_F3
iAtom_PreviousBtn = GlobalAddAtom("PreviousBtn Hotkey")
RegisterHotKey AppWnd, iAtom_PreviousBtn, MOD_SHIFT, KEY_F4
iAtom_FForwardBtn = GlobalAddAtom("FForwardBtn Hotkey")
RegisterHotKey AppWnd, iAtom_FForwardBtn, MOD_SHIFT, KEY_F5
iAtom_FBackwardBtn = GlobalAddAtom("FBackwardBtn Hotkey")
RegisterHotKey AppWnd, iAtom_FBackwardBtn, MOD_SHIFT, KEY_F6
iAtom_ToggleRepeatBtn = GlobalAddAtom("ToggleRepeatBtn Hotkey")
RegisterHotKey AppWnd, iAtom_ToggleRepeatBtn, MOD_SHIFT, KEY_F7
iAtom_ToggleShuffleBtn = GlobalAddAtom("ToggleShuffleBtn Hotkey")
RegisterHotKey AppWnd, iAtom_ToggleShuffleBtn, MOD_SHIFT, KEY_F8
iAtom_SaveSongTitleBtn = GlobalAddAtom("SaveSongTitleBtn Hotkey")
RegisterHotKey AppWnd, iAtom_SaveSongTitleBtn, MOD_SHIFT, KEY_F10
iAtom_BackwardHotkey = GlobalAddAtom("Backward Hotkey")
RegisterHotKey AppWnd, iAtom_BackwardHotkey, MOD_CONTROL, 37
iAtom_ForwardHotkey = GlobalAddAtom("Forward Hotkey")
RegisterHotKey AppWnd, iAtom_ForwardHotkey, MOD_CONTROL, 39
iAtom_VolUpHotkey = GlobalAddAtom("VolUp Hotkey")
RegisterHotKey AppWnd, iAtom_VolUpHotkey, MOD_CONTROL, 38
iAtom_VolDownHotkey = GlobalAddAtom("VolDown Hotkey")
RegisterHotKey AppWnd, iAtom_VolDownHotkey, MOD_CONTROL, 40
PrevWindowProc = SetWindowLong(AppWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnregisterHotkeys()
UnregisterHotKey AppWnd, iAtom_PlayPauseBtn
GlobalDeleteAtom iAtom_PlayPauseBtn
UnregisterHotKey AppWnd, iAtom_StopBtn
GlobalDeleteAtom iAtom_StopBtn
UnregisterHotKey AppWnd, iAtom_NextBtn
GlobalDeleteAtom iAtom_NextBtn
UnregisterHotKey AppWnd, iAtom_PreviousBtn
GlobalDeleteAtom iAtom_PreviousBtn
UnregisterHotKey AppWnd, iAtom_FForwardBtn
GlobalDeleteAtom iAtom_FForwardBtn
UnregisterHotKey AppWnd, iAtom_FBackwardBtn
GlobalDeleteAtom iAtom_FBackwardBtn
UnregisterHotKey AppWnd, iAtom_ToggleRepeatBtn
GlobalDeleteAtom iAtom_ToggleRepeatBtn
UnregisterHotKey AppWnd, iAtom_ToggleShuffleBtn
GlobalDeleteAtom iAtom_ToggleShuffleBtn
UnregisterHotKey AppWnd, iAtom_SaveSongTitleBtn
GlobalDeleteAtom iAtom_SaveSongTitleBtn
UnregisterHotKey AppWnd, iAtom_BackwardHotkey
GlobalDeleteAtom iAtom_BackwardHotkey
UnregisterHotKey AppWnd, iAtom_ForwardHotkey
GlobalDeleteAtom iAtom_ForwardHotkey
UnregisterHotKey AppWnd, iAtom_VolUpHotkey
GlobalDeleteAtom iAtom_VolUpHotkey
UnregisterHotKey AppWnd, iAtom_VolDownHotkey
GlobalDeleteAtom iAtom_VolDownHotkey
End Sub
Public Sub UnSubclass()
SetWindowLong AppWnd, GWL_WNDPROC, PrevWindowProc
End Sub
Private Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error Resume Next
If hWnd = AppWnd Then
If uMsg = WM_HOTKEY Then
Select Case wParam
Case iAtom_PlayPauseBtn
If WAPlaybackStatus = 0 Then
WATrackPlay
ElseIf WAPlaybackStatus = 1 Then
WATrackPause
ElseIf WAPlaybackStatus = 2 Then
WATrackPlay
ElseIf WAPlaybackStatus = 3 Then
WATrackPlay
End If
Case iAtom_StopBtn
WATrackStop
Case iAtom_NextBtn
WATrackNext
Case iAtom_PreviousBtn
WATrackPrev
Case iAtom_FForwardBtn
WATrackFForward
Case iAtom_FBackwardBtn
WATrackFRewind
Case iAtom_ToggleRepeatBtn
WAToggleRepeat
Case iAtom_ToggleShuffleBtn
WAToggleShuffle
Case iAtom_SaveSongTitleBtn
WASaveSongTitle
Case iAtom_BackwardHotkey
WATrackFRewind
Case iAtom_ForwardHotkey
WATrackFForward
Case iAtom_VolUpHotkey
WAVolRaise
Case iAtom_VolDownHotkey
WAVolLower
End Select
End If
End If
WindowProc = CallWindowProc(PrevWindowProc, hWnd, uMsg, wParam, lParam)
End Function