Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2089386
  • 博文数量: 519
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 3985
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-29 14:05
个人简介

只问耕耘

文章分类

全部博文(519)

文章存档

2016年(1)

2013年(5)

2011年(46)

2010年(220)

2009年(51)

2008年(39)

2007年(141)

2006年(16)

我的朋友

分类: WINDOWS

2010-03-04 17:01:24

下面,我们举一个完整的程序作为例子(还是以VB为例),我们可以用API写一个CD播放器来代替使用多媒体控件。这样做的好处很明显,当你把程序编译成为EXE文件后复制给朋友的时候,
你再也不必附加其他OCX文件(如果是Delphi的话,EXE文件体积也可以减小)。

在VB中新建一个工程,在Form1中添加6个按钮和一个Timer控件,属性如下:

名称:Command1,Caption:弹出
名称:Command2,Caption:播放
名称:Command3,Caption:暂停
名称:Command4,Caption:下一首
名称:Command5,Caption:上一首
名称:Command6,Caption:退出
名称:Timer1,Interval:1000


接着,我们就可以编写代码了,如下:

'函数声明
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As
String) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA"
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal
uReturnLength As Long, ByVal hwndCallback As Long) As Long
Dim Cur As Integer '保存当前正在播放的曲目号
Dim Total As Integer '保存CD曲目总数

'弹出CD-ROM
Private Sub Command1_Click()
i% = mciExecute("set cdaudio door open")
End Sub

'播放
Private Sub Command2_Click()
i% = mciExecute("play cdaudio")
End Sub

'暂停
Private Sub Command3_Click()
i% = mciExecute("pause cdaudio")
End Sub

'播放下一首
Private Sub Command4_Click()
Dim ReturnStr As String * 128
i% = mciExecute("set cdaudio time format tmsf") '设置from后的时间格式
If Cur < Total Then i% = mciExecute("play cdaudio from" + Str(Cur + 1))
End Sub

'播放上一首
Private Sub Command5_Click()
Dim ReturnStr As String * 128
i% = mciExecute("set cdaudio time format tmsf")
If Cur > 1 Then i% = mciExecute("play cdaudio from" + Str(Cur - 1))
End Sub

'中止CD的播放并退出
Private Sub Command6_Click()
i% = mciExecute("stop cdaudio")
i% = mciExecute("close cdaudio")
End
End Sub

'程序启动时打开CDAudio设备并得到曲目总数
Private Sub Form_Load()
Dim ReturnStr As String * 128
i% = mciSendString("open cdaudio", ReturnStr, 128, 0)
i% = mciSendString("status cdaudio number of tracks", ReturnStr, 128, 0)
Total = Val(ReturnStr)
End Sub

'退出时中止CD的播放
Private Sub Form_Unload(Cancel As Integer)
i% = mciExecute("stop cdaudio")
i% = mciExecute("close cdaudio")
End Sub

'每隔一秒监测当前播放的曲目号
Private Sub Timer1_Timer()
On Error Resume Next
Dim ReturnStr As String * 128
i% = mciSendString("status cdaudio current track", ReturnStr, 128, 0)
Cur = Val(ReturnStr)
End Sub


  好了,现在这个CD播放器已经可以工作了,如果你再为它扩充一些有趣的功能的话,就是一个完整的小软件了。
阅读(1815) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~