首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 媒体工具
利用vb测声卡_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
在一个多媒体应用程序中,如果涉及对声音的播放与操作,那么我们就有必要先对用户系统中的声卡及真功能进行一下测试。幸好有VB,所以我们要实现这些功能并不用费多大力气(也就是吃顿饭的力气),在下面的程序中我们将利用VB调用两个windowsApi函数--Waveoutgetnumdevs()和Waveoutgetdev-capS()来访问设备驱动程序,获取有关信息,实现上述目的。OK,LetsGo!一、我们先要捡测一下声卡是否存在
1.新建一工程并添加模块Module1.bas,在其声明部分加入如下代码:
DeclareFunctionWaveoutgetnumdevsLib"Winmm.Dll"()asLong
PublicConstMb_ok=&H40
2.在窗体上添加一个命令按钮cmdtest,设置Caption的属性为“测试声卡”
3.在窗体的通用声明部分加入一函数testcard,代码如下:
PublicFunctionTestcard()AsBoolean
DimYAslong
DimFindAsStringFind=“FiedSoundBlasterCard"
Y=Waveoutgetnumdevs()
IfY>0Then
Testcard=True
Msgbox"啥啥,我找到你了--声卡!",Mb_ok,Find
Else
Testcard=Falsc
Msgbox"未发现设备",Mb_ok,Find
Endif
EndFunction
4.在命令按钮的单击事件中加入代码:
PrivatesubCmdtest_Click()
DimExistentAsBoolean
Existent=Testcard
Endsub
现在你可以运行这个程序试试看了,它会检测你的系统中是否有声卡的存在。二、测试声卡的功能
既然已经发现了声卡的存在,接下来就要测试一下它的功能。为什么?举个例子来说,老式声卡支持的采样率和位分辨率是远不及现在声卡的,如果你试图用只有8位分辨率和22.05KHz采样率的声卡来播放44.1KHz、16位立体声的声音文件,嘿嘿……有你好看(其实也没啥大不了的)。好,你大胆的往下看。
1.在窗体上加入picturebox控件picture1。
2.在Module1.bass的声名节中加入代码:
DeclareFunctionWaveoutgetdevcapsLib"Winmm.dll"Alias"Waveoutgetdevcapsa"(ByvaIUdcviceidAsLong,LpcapsAsWaveOutcaps,ByvaIUsizeAsLong)AsLong
参数1指定被测设备。由于一台PC上装有几个音频设备是完全可能的,所以Windows自动给每个设备编号,第一个可用设备号为0。
参数2是一个Waveoutcaps结构的指针。
多数3是第二个参数的大小。
PublicConstMaxpnamelen=32
PublicConstWave_Format_1m08=&H1
PublicConstWavp_Format_1ml6=&H4
PublicConstWave_Format_1s08=&H2
PublicConstWave_Format_1sl6=&H8
PublicConstWavc_Format_2m0B=&H1O
PublicConstWave_Format_2m16=&H40
PublicConstWave_Format_2s08=&H20
PublicConstWave_Format_2s16=&H80
PublicConstWave_Format_4m08=&H100
PublicConstWave_Format_4ml6=&H400
PublicConstWave_Format_4s08=&H200
PublicConstWave_Format_4s16=&H800
PublicConstWavecaps_Lrvolume=&H8
PublicConstWavecaps_Pitch=&H1
PublicConstWavecaps_Playbackrate=&H2
PublicConstWavecaps_Sync=&H10
PublicConstWavecaps_Volume=&H4

TypeWaveoutCaps
WmidAsInteger设备驱动程序厂商标识
WpidAsInteger声卡厂商标识
VdriverversionAsLong驱动程序版本号,高字节为主版本号,低字节为次版本号
SzpnameAsString*Maxpnamelen产品名称
DwformatsAsLong支持的wave格式,每一位代表一种格式
WchannelsAsInteger返回整型值1(单声道)或2(立体声)
DwsupportAsLong设备支持的扩展输出功能
EndType
3.在窗体的声明节内增加两个函数:
函数listwaveformat检测波形音频支持的格式
PublicFunctionListwaveformat(AboutwaveAslong)AsString
DimWaveformatAsString
SelectCaseAboutwave
CaseWave_Format_1m08
Waveformat="11.025khz,Mono,8bit,11kb/Ps"
CaseWave_Format_1m16
Waveformat="11.025khz,Mono,16bit,22kb/Ps"
CaseWave_Format_1s08
Waveformat="11.025khz,Stereo,8bit,22kb/Ps"
CaseWave_Format_1s16
Waveformat="11.025khz,Stereo,16bit,43kb/Ps"
Casewave_Format_2m08
Waveformat="22.05khz,Mono,8bit,22kb/Ps"
CaseWavc_Format_2m16
Waveformat="22.05khz.Mono,16bit,43kb/Ps"
CaseWave_Format_2s16
Waveformat="22.05khz,Stereo,8bit,43kb/Ps"
CaseWave_Format_2s16
Waveformat="22.05khz,Stereo,16bit,86kb/Ps"
CaseWave_Format_4m08
Waveformat="44.1khz,Mono,8bit,43kb/Ps"
CaseWave_Format_4m16
Wavcformat="44.lkhz,Mono,16bit,86KB/Ps"
CaseWave_Format_4s08
Waveformat="44.lkhz,Stereo,8bit,86kb/Ps"
CaseWavc_Format_4s16
Waveformat="44.lkhz.Stereo,16bit,172kb/Ps"
EndSelect
Listwaveformat=Waveformat
EndFunction
函数Listwavesupport检测设备支持的扩展输出功能
PublicFunctionListwavesupport(AboutwaveAslong)AsString
DimWavefunAsString
SclectCaseAboutwave
CaseWavecaps_Pitch
Wavefun="SupportPitch"
CascWavecaps_Playbackrate
Wavefun="SupportPlayback"
CaseWavecaps_Volume
Wavefun="SupportVolumeControl"
CsaeWavecaps_Lrvolume
Wavefun="SupportLeft-RightChannals"
CsaeWavecaps_sync
Wavcfun="SupportSynchronization"
EndSelect
Listwavesupport=Wavefun
EndFunction
4.修改cmdtest_Click事件的代码为:
PrivateSubCmdtest_Click()
DimExistentAsBoolean
DimConsequenceAslong
DimReturncapsAsWaveoutcaps
DimRainverAsLong
DimLesservcrAslong
DimPnameAsString*32
DimAboutwaveAslong
DimChannelAsString*2
DimIAslnteger
Existent=Testcard
IfExistentThen
Consequence=Waveoutgetdevcaps(0,Returncaps,Len(Returncaps))IfConsequence=0Then
Mainver=Returncaps.Vdriverversion\256
Lesserver=Returncaps.VdriverversionMod256
因为API在返回Returncaps.szpname时在返回值与空格之间会插入一个空的终止符,用Rtrim$会返回一个0终止字符串,所以我们采用Instr Left$的方法.
Pname=Left$(Returncaps.Szpname,Instr(Returncaps.Szpname,Chrr$(0))-1)
Channe1=Str$(Returncaps.Wchannels)
Picture1.Print"产品名称:";Pname
Picture1.Print"产品Id:";Returncaps.Wpid
Picture1.Print"驱动程序Id:";Returncaps.Wrmid
Picture1.Print"驱动程序版本:";Mainver;".";LesserverPicture1.Print"输出声道:";Channel
Picture1.Print"支持格式列表:"
ForI=0TO11
IfReturncaps.DwformatsAnd(2^I)Then
Picture1.PrintListwaveformat(2^I)
Endif
NextI
Picture1.Print"扩展输出功能列表:"
Forl=0To4
IfReturncaps.DwsupportAnd(2^I)Then
Picture1.PrintListwavesupport(2^I)
Endif
NextI
Endif
Else
End
Endif
EndSub
5.为Form_load事件加入代码:
PrivateSubForm_Load()Picture1.ClsEndSub本程序在Win95(osr2)、VB5企业版下调试通过,在win3.2下仅仅两个API函数略有改变,照猫画虎即可。
好了,工作已经全部做完了。现在你要做的只是按下F5,我也要随风而去了,各位看官后会有期,隐也。->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用ASP实现文件上载(上传)的各种方法-ASP教程,ASP应用
·windows media player同步歌词秀全攻略
·无法加载DLL(OCI.DLL),如何解决?-ASP教程,ASP应用
·七款常用视频播放软件的截图功能介绍
·C#向Sql Server中插入记录时单引号的处理-.NET教程,C#语言
·rm、rmvb视频文件减肥指南
·流媒体播放器暴风影音使用技巧十则
·ASP生成静态htm页面基本代码!-ASP教程,ASP基础
·photoshop制作撕纸效果-网页设计,Photoshop
·用ashx动态生成文件-.NET教程,Asp.Net开发
最新文章
·用photoshop去除照片中文字_photoshop教程
·认识mpeg视频压缩标准及相关编码格式_媒体工具教程
·flvix flv流媒体视频转换下载一步完成_媒体工具教程
·后sp时代 搜索联盟广告是站长们战略主攻方向_网赚技巧
·网络赚钱:利用好你的博客_网赚技巧
·百度主题推广申请要求大大降低_网赚技巧
·黔江小伙龚节毅:一人办全国顶级音乐网_站长访谈
·徐志勇 网站做得好不好网民说了算_站长访谈
·杨云:以模拟的炒股软件模拟炒股_站长访谈
·三招两式 提高博客的访问量_站长心得
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭