vb中使用Windows消息控制Winamp(2)
例程:控制Winamp暂停,播放,和跳到下一首音乐
新建一个标准EXE工程,加入一个模块,在模块中加入代码----------
Option Explicit
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_COMMAND = &H111
Const IPC_WINAMP_NextTrackButton = 40048 '跳到下一首音乐
Const IPC_WINAMP_PlayButton = 40045 '播放
Const IPC_WINAMP_PauseUnpauseButton = 40046 '暂停
Public hwndWinamp As Long 'Winamp的句柄
Public Sub WinampPlay() '播放
SendMessage hwndWinamp, WM_COMMAND, IPC_WINAMP_PlayButton, 0
End Sub
Public Sub WinampPause() '暂停
SendMessage hwndWinamp, WM_COMMAND, IPC_WINAMP_PauseUnpauseButton, 0
End Sub
Public Sub WinampNext() '跳到下一首音乐
SendMessage hwndWinamp, WM_COMMAND, IPC_WINAMP_NextTrackButton, 0
End Sub
在Form中加入的代码----------
Option Explicit
Private Sub cmdNext_Click()
WinampNext '跳到下一首音乐
End Sub
Private Sub cmdPause_Click()
WinampPause '暂停
End Sub
Private Sub cmdPlay_Click()
WinampPlay '播放
End Sub
Private Sub Form_Load()
hwndWinamp = FindWindow("Winamp v1.x", vbNullString) '得到Winamp的句柄
If hwndWinamp = 0 Then '判断Winamp是否运行
MsgBox "请启动Winamp先!"
Unload Me
End If
End Sub
2.WM_USER 消息:
例程:得到Winamp的版本
新建一个标准EXE工程,加入一个模块,在模块中加入代码----------
Option Explicit
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'这是VB的API声明,不会返回正确的结果
'Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'这是正确的SendMessage声明,才能返回版本信息,读者可以参考一下两者的不同
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const WM_USER = &H400
Const WA_GETVERSION = 0
Public hwndWinamp As Long 'Winamp的句柄
Function WinampGetVersion() As String
Dim VersionNum As Long
Dim ReturnVersion As String
VersionNum = SendMessage(hwndWinamp, WM_USER, 0, WA_GETVERSION)
If Len(Hex(VersionNum)) > 3 Then
ReturnVersion = Left(Hex(VersionNum), 1) & "."
ReturnVersion = ReturnVersion & Mid(Hex(VersionNum), 2, 1)
ReturnVersion = ReturnVersion & Right$(Hex(VersionNum), Len(Hex(VersionNum)) - 3)
WinampGetVersion = ReturnVersion
Else
WinampGetVersion = "UNKNOWN"
End If
End Function
在Form中加入的代码----------
Option Explicit
Private Sub Command1_Click()
MsgBox "你的Winamp的版本是:" & WinampGetVersion
End Sub
Private Sub Form_Load()
hwndWinamp = FindWindow("Winamp v1.x", vbNullString) '得到Winamp的句柄
If hwndWinamp = 0 Then '判断Winamp是否运行
MsgBox "请启动Winamp先!"
Unload Me
End If
End Sub
3.WM_COPYDATA 消息:
例程:Winamp的运行时刻在播放列表中加入一首Mp3的歌曲
新建一个标准EXE工程,加入一个模块,在模块中加入代码----------
Option Explicit
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function CopyDataSendMessage Lib "user32" Alias "SendMessageA" (ByVal WndID As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As COPYDATASTRUCT) As Long
Private Type COPYDATASTRUCT
dwData As Long
cbData As Long
lpData As Long
End Type
Const IPC_PLAYFILE = 100
Const WM_COPYDATA = &H4A
Public hwndWinamp As Long
Public Sub WinampAddSong(SongName As String)
Dim CDS As COPYDATASTRUCT
With CDS
.dwData = IPC_PLAYFILE
.cbData = 100
.lpData = lstrcpy(SongName, SongName)
End With
CopyDataSendMessage hwndWinamp, WM_COPYDATA, 0&, CDS
End Sub
在Form中加入的代码----------
Option Explicit
Private Sub Command1_Click()
WinampAddSong "I:Mp3周杰伦-简单爱.mp3" '加入一首歌
End Sub
Private Sub Form_Load()
hwndWinamp = FindWindow("Winamp v1.x", vbNullString) '得到Winamp的句柄
If hwndWinamp = 0 Then '判断Winamp是否运行
MsgBox "请启动Winamp先!"
Unload Me
End If
End Sub
所有例程在 Win2000 + VB6 中调试通过
- 上一篇:怎样在VB中控制WORD
- 下一篇:用VB.NET 2005编写定时关机程序[组图]




