用VB60制作迷你播放器资料.docx
- 文档编号:27998711
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:14
- 大小:180.12KB
用VB60制作迷你播放器资料.docx
《用VB60制作迷你播放器资料.docx》由会员分享,可在线阅读,更多相关《用VB60制作迷你播放器资料.docx(14页珍藏版)》请在冰豆网上搜索。
用VB60制作迷你播放器资料
用VB6.0制作迷你播放器
平山县回舍中学郜兵山
摘要本文设计并实现了一个能自动播放多媒体文件并且具有自动记忆播放目录和正在播放文件路径的播放器,并提供了用VB6.0编写的源代码。
关键词播放器VBActivex控件
1、引言
WindowsMediaPlayer控件(Msdxm.Ocx)支持的文件类型比较丰富,可以播放Wav、Mid、Mp3、Wma、Aif、Asf、Mpeg、Mpg、Avi、Mov、Dat、Rmi等多媒体文件。
本文介绍了在VB6.0环境下利用这个控件实现自动连续播放及启动时自动从上次退出的文件处继续播放多媒体文件的技术。
2、设计思路
2.1自动连续循环播放多个文件
通过对通用对话框控件(Comklg32.Ocx)有关属性的设置,可以实现按选的的文件类型在列表框中显示符合条件的文件,用户可以在该列表框中选择一个文件或选择不连续或选择连续的几个文件,若选择了多个文件,则按顺序连续播放。
开始播放后,组合框和窗体的标题栏中同时显示正在播放文件的文件名。
2.2自动记忆播放目录和正在播放的文件的路径
退出播放时,程序自动将用户选择的目录保存到Windows的注册表中,以便下次选择要播放的文件时,在打开的对话框中,直接显示的是上次选择的目录。
同时自动将用户选择的文件清单保存到文件中,以便下次启动该程序时,可以直接从退出时正在播放在那个文件继续播放,这样就能实现每次启动播放器,首选播放是是上次退出时播放的那个文件。
这样做就使程序具有了记忆功能。
2.3用户自定义播放顺序
单击下一个按钮,开始播放下一个文件,单击上一个按钮,开始播放上一个文件。
单击停止播放按钮,则播放器停止播放,同时停止播放按钮变为开始播放按钮,单击开始播放按钮,播放器从暂停处开始播放,同时开始播放按钮变为停止播放按钮。
单击组合框右边的下拉按钮,可以看在正在播放的文件列表,要想换一个文件播放,直接单击文件名即可。
3、功能实现
3.1素材准备——按钮中加载的图片文件
按钮图片:
为增加界面更直观、美观,可以为界面中所用到的选择文件、暂停播放\开始播放、退出、上一个、下一个、退出五个按钮加载图片。
为实现这一要求,可利用图片编辑软件如Fireworks、Photoshop等制作五个按钮,具体制作方法,可以参考相应软件的使用方法完成。
将这些图片作好之后,放在按钮图片文件夹中,并将按钮图片文件夹与所建的工程文件放在同一个文件夹下。
这里用Fireworks制作的五个按钮所加载的图片如下图所示,在制作过程或程序运行过程中,将这些图片加载到相应的按钮。
3.2界面布局设计
3.2.1新建一个工程,打开窗体设计器
执行“开始”→“所有程序”→“VisualBasic6.0精简版”→“VisualBasic6.0精简版”命令,打开“新建工程”对话框。
如下图所示。
在此对话框中,直接单击“打开”按钮,新建一个工程—工程1,同时打开窗体设计器。
如下图所示。
3.2.2在窗体中添加控件
一、在窗体中添加选择文件、开始播放\暂停播放、退出、上一个、下一个五个命令按钮。
在工具箱中五次双击Commandbutton在窗体中添加五个命令按钮Command1、Command2、Command3、Command4、Command5。
调整五个命令按钮中窗体中的位置。
打开属性窗口,按照下表设置五个命令按钮的属性:
对象名称
属性
属性值
Command1
Picture
加载open.Gif
Style
1—Graphicale
Tooltiptext
选择文件
Command2
Picture
加载stop.Gif
Style
1—Graphicale
Tooltiptext
暂停播放
Command3
Picture
加载Prev.Gif
Style
1—Graphicale
Tooltiptext
上一个
Command4
Picture
加载Next.Gif
Style
1—Graphicale
Tooltiptext
下一个
Command5
Picture
加载Exit.Gif
Style
1—Graphicale
Tooltiptext
退出
二、在窗体中添加Windowsmediaplayer控件
执行“工程”→“部件…”命令,打开“部件”对话框,如下图所示。
在此对话框中的控件列表中选择“WindowsMediaPlayer”之后,单击“应用”按钮,将该控件添加到工具箱中;在工具箱中,选中“windowsMediaplayer”控件,在窗体中拖动鼠标,将Windowsmediaplayer控件添加到窗体中。
选中刚添加到窗体中的Windowsmediaplayer对象,按照下表的要求,在属性窗口中设置其属性。
属性
属性值
名称
Windowsmediaplayer
自定义
选择模式
None
播放选项
自动启动、全屏播放
三、添加组合框控件
在工具箱中双击组合框Commbox,在窗体中添加组合框Combo1,选中Combo1,在属性窗口中,按照下表设置其属性。
属性
属性值
名称
Combo1
Style
2—Dropdownlist
四、添加通用对话框Commondlg32
执行“工程”→“部件…”命令,打开“部件”对话框,如下图所示。
在该对话框中,单击“浏览”按钮,打开“添加Activex控件”对话框,如下图所示。
完成添加控件之后,并调整窗体及窗体中各控件的大小及位置之后,效果如下图所示。
在此对话框的Activex控件列表中,选中“Comdlg32.Ocx”后,单击“打开”按钮,可以看到“部件”对话框的控件列表中出现了“MicrosoftCommonDilogControl6.0(Sp6),单击“应用”按钮,即可将“Comdlg32.Ocx”添加到工具箱中。
双击工具箱中的Comdlg32控件,将该控件添到窗体。
3.3添加事件过程代码
执行“视图”→“代码窗口”命令,打开代码窗口,如下图所示。
在代码窗口的左侧中分别选择对象,在右侧栏中选择事件,然后在下面输入相应的事件过程代码,窗体及窗体中的对象的事件过程代码如下:
OptionExplicit
DimmAsInteger
PrivateDeclareFunctionGetSystemDirectoryLib"Kernel32"Alias"GetSystemDirectoryA"(ByVallpBufferAsString,ByValnSizeAsLong)AsLong'返回windows\system所在的文件夹
PrivateWinSysPathAsString
PrivateSelectFName(1000)AsString
PrivateSelectNumAsInteger,NextPlayingAsInteger
PrivatePreviousPathAsString'此变量保存用户上次选择的目录,以便再次启动播放器,单击打开时,直接显示的是上次用户打开的目录,此变量的值保存在Windows的注册表中
PrivateSubCombo1_Click()
NextPlaying=Combo1.ListIndex-1
WindowsMediaPlayer1_EndOfStream(0&)
Command2.Picture=LoadPicture(App.Path&"\stop"&".gif")
Command2.ToolTipText="停止播放"
m=1
EndSub
PrivateSubCommand1_Click()
DimFNameAsString
DimiAsInteger,jAsInteger
DimThePathAsString
DimTmpAsString
CommonDialog1.CancelError=True
OnErrorGoToErrhandler
CommonDialog1.Flags=cdlOFNAllowMultiselect'允许多选,所有选择的文件名之间用空格分隔,保存在FileName中
CommonDialog1.InitDir=IIf(PreviousPath="NoData","C:
\WINDOWS",PreviousPath)
CommonDialog1.Filter="*.asx|*.asx|*.wmv|*.wmv|*.mpeg|*.mpeg|*.mpg|*.mpg|*.avi|*.AVI|*.wav|*.WAV|*.mid|*.MID|*.mp3|*.MP3|*.mov|*.MOV|*.dat|*.DAT|*.RMI|*.rmi|*.*|*.*"'设置扩展名
CommonDialog1.MaxFileSize=32767'当同时选择许多文件时默认的260放不下,故要大点,这是最大的值
CommonDialog1.ShowOpen:
FName=CommonDialog1.FileName
'下面将选择的若干文件名分开,放在数组SelectFName中
IfInStr(FName,Chr(32))=0Then'若只选择一个文件,FName中没有空格,否则文件名之间用空格分隔,若文件在根目录,则路径形如E:
\,否则形如E:
\abc\123
SelectNum=1:
SelectFName(0)=FName
'InStrRev函数是从尾部开始搜索
ThePath=Left(FName,InStrRev(FName,"\")-1)
Else
ThePath=Left(FName,InStr(FName,Chr(32))-1)+"\"
FName=Mid(FName,InStr(FName,Chr(32))+1)
SelectNum=0:
j=1:
Tmp=Space(0)
Fori=1ToLen(FName)
IfMid(FName,i,1)=Chr(32)Then
SelectFName(SelectNum)=ThePath+Tmp
SelectNum=SelectNum+1:
Tmp=Space(0)
Else
Tmp=Tmp+Mid(FName,i,1)
EndIf
Nexti
SelectFName(SelectNum)=ThePath+Tmp
SelectNum=SelectNum+1
EndIf
'分隔结束
Combo1.Clear
Fori=0ToSelectNum-1'此循环将选中的文件显示在组合框中
Combo1.AddItemMid(SelectFName(i),InStrRev(SelectFName(i),"\")+1)
Nexti
Combo1.ListIndex=0'让list数组中第一个显示在文本框中
NextPlaying=0
Me.Caption=Combo1.Text
SaveSetting"ShinMountain","PlayMp3","LastPath",ThePath
Errhandler:
WindowsMediaPlayer1.Controls.stop
EndSub
PrivateSubCommand2_Click()
Ifm=0Then
Command2.Picture=LoadPicture(App.Path&"\stop"&".gif")
WindowsMediaPlayer1.Controls.play
Command2.ToolTipText="停止播放"
m=1
Else
Command2.Picture=LoadPicture(App.Path&"\play"&".gif")
WindowsMediaPlayer1.Controls.stop
m=0
Command2.ToolTipText="开始播放"
EndIf
EndSub
PrivateSubCommand3_Click()
'退出之前,将用户选中的文件保存起来,以便下一次启动该程序时,可以直接从保存的文件开始继续播放,为了做到这一点,在将播放列表写入文件时,必须让正在播放的那个文件首先写入文件中,然后是它后面的,到底后再绕回来,按这个顺序写入。
因为程序启动后,是按文件中的列表顺序从前向后进行播放的,故每次启动都首先播放的是退出之前播放的那个文件。
DimTmp1AsInteger
OnErrorGoToErrhandler'一旦文件不存在,会触发此事件
Tmp1=0
OpenWinSysPathForOutputAs#1
DoWhileTmp1 Print#1,SelectFName(NextPlaying) Tmp1=Tmp1+1 NextPlaying=(NextPlaying+1)ModSelectNum Loop Close#1 Errhandler: UnloadMe EndSub PrivateSubCommand4_Click() NextPlaying=IIf(NextPlaying-1<0,SelectNum-2,NextPlaying-2) WindowsMediaPlayer1_EndOfStream(0&) EndSub PrivateSubCommand5_Click() WindowsMediaPlayer1_EndOfStream(0&) EndSub PrivateSubForm_Load() DimTmp1AsString DimTmp2AsInteger m=0 Me.Caption="迷你播放器" Command1.Caption="": Command2.Caption="": Command3.Caption="": Command4.Caption="": Command5.Caption="" Command2.Enabled=True Combo1.Locked=False '下面的GetSetting,若存在LastPath项的值,则返回其值,否则返回NoData PreviousPath=GetSetting("ShinMountain","PlayMp3","LastPath","NoData") 'GetSetting语句从Windows注册表中的应用程序项目返回注册表项设置值。 'DeleteSetting语句在Windows注册表中,从应用程序项目里删除区域或注册表项设置。 'DeleteSetting"ShinMountain"此句可以删除ShinMountain项 'SaveSetting语句在Windows注册表中保存或建立应用程序项目。 '这些数据保存在hkey_current_user\software\VBandVBAprogramssettings下面 '以下代码将上次选择的多媒体文件(保存在WinSysPath中)读出来,放SelectFName数组中,并开始播放 Tmp1=Space(260) Tmp2=GetSystemDirectory(Tmp1,Len(Tmp1)) WinSysPath=Left(Tmp1,Tmp2) WinSysPath=WinSysPath+"\Inventory.DLL"'Inventory.DLL文件保存正在播放文件的列表。 OnErrorGoToErrhandler'Inventory.DLL文件不存在,会触发此事件,一般第一次运行时会出现这种情况 SelectNum=0 NextPlaying=-1 OpenWinSysPathForInputAs#1 DoWhileNotEOF (1) LineInput#1,SelectFName(SelectNum) Combo1.AddItemMid(SelectFName(SelectNum),InStrRev(SelectFName(SelectNum),"\")+1) SelectNum=SelectNum+1 Loop Close#1 WindowsMediaPlayer1_EndOfStream(0&) Errhandler: IfCombo1.ListCount=0Then'可能是第一次运行此软件,Inventory.DLL文件还不存在,或一个文件也没有 Combo1.List(0)="没有可选项目" EndIf Combo1.ListIndex=0'让list数组中第一个显示在文本框中 WindowsMediaPlayer1.Controls.stop EndSub PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger) Command3_Click EndSub PrivateSubWindowsMediaPlayer1_EndOfStream(ByValResultAsLong) OnErrorGoToErrhandler'接下来要播放的文件一旦不存在,会触发此事件,这样做是为了防止程序遇到意外时不至于崩溃,只是忽略这个错误,程序可以继续运行下去 NextPlaying=(NextPlaying+1)ModSelectNum WindowsMediaPlayer1.URL=SelectFName(NextPlaying) Combo1.ListIndex=NextPlaying: Me.Caption=Combo1.Text Command2.Enabled=True: Command2.Caption="" Errhandler: ExitSub EndSub 4、运行与调试 执行“运行”→“全编译执行”命令,运行程序。 在程序运行窗口中,单击选择文件、暂停播放、上一个、下一个、退出及组合框,查看各按钮及组合框能否正常使用,发现问题,修改代码,再运行程序,直到程序能正常运行,播放的文件能正常播放为止。 5、生成可执行程序 运行上面工程文件是在VB6.0环境下进行的,一般情况下,当程序设计完成之后,我们要让它脱离软件的开发环境来运行。 为实现这一目的,我们可以利用软件的开发环境,生成可执行文件,以后,直接运行可执行文件就可以了。 生成可执行文件的方法如下: 执行“文件”“生成迷你播放器.exe”命令,打开“生成工程”对话框,如下图所示。 在此对话框中,选择可执行文件保存的位置,输入生成的可执行文件的文件名后,单击确定按钮,即可在指定位置,生成可执行文件。 本程序在VB6.0环境下,调试通过。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB60 制作 迷你 播放 资料