说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

利用VB测声卡

HTML文档下载 WORD文档下载 PDF文档下载
利用VB测声卡
在一个多媒体应用程序中,如果涉及对声音的播 放与操作,那么我们就有必要先对用户系统中的声卡 及真功能进行一下测试。幸好有VB,所以我们要实现 这些功能并不用费多大力气(也就是吃顿饭的力气), 在下面的程序中我们将利用VB调用两个windows Api函数--Waveoutgetnumdevs()和Waveoutgetdev- capS()来访问设备驱动程序,获取有关信息,实现上述 目的。OK,Let's Go! 一、我们先要捡测一下声卡是否存在
1.新建一工程并添加模块Module1.bas,在其声 明部分加入如下代码:
Declare Function Waveoutgetnumdevs Lib"Winmm.Dll"() as Long
Public Const Mb_ok= & H40
2.在窗体上添加一个命令按钮cmdtest,设置Caption的属性为“测试声卡”
3.在窗体的通用声明部分加入一函数testcard,代码如下:
Public Function Testcard() As Boolean
Dim Y As long
Dim Find As String Find = “Fied Sound Blaster Card"
Y = Waveoutgetnumdevs()
If Y > 0 Then
Testcard = True
Msgbox "啥啥,我找到你了--声卡!", Mb_ok,Find
Else
Testcard = Falsc
Msgbox "未发现设备",Mb_ok,Find
End if
End Function
4.在命令按钮的单击事件中加入代码:
Private sub Cmdtest_Click()
Dim Existent As Boolean
Existent =Testcard
End sub
现在你可以运行这个程序试试看了,它会检测你 的系统中是否有声卡的存在。 二、测试声卡的功能
既然已经发现了声卡的存在,接下来就要测试一 下它的功能。为什么?举个例子来说,老式声卡支持的 采样率和位分辨率是远不及现在声卡的,如果你试图 用只有8位分辨率和22.05KHz采样率的声卡来播放 44.1KHz、16位立体声的声音文件,嘿嘿……有你好 看(其实也没啥大不了的)。好,你大胆的往下看。
1.在窗体上加入picturebox控件picture1。
2.在Module1.bass的声名节中加入代码:
Declare Function Waveoutgetdevcaps Lib "Winmm.dll" Alias"Waveoutgetdevcapsa"(ByvaI Udcviceid As Long,Lpcaps As WaveOutcaps, ByvaI Usize As Long) As Long
'参数1指定被测设备。由于一台PC上装有几个音频设 备是完全可能的,所以Windows自动给每个设备编号,第一 个可用设备号为0。
'参数2是一个Waveoutcaps结构的指针。
'多数3是第二个参数的大小。
Public Const Maxpnamelen = 32
Public Const Wave_Format_1m08 = & H1
Public Const Wavp_Format_1ml6 = & H4
Public Const Wave_Format_1s08 = & H2
Public Const Wave_Format_1sl6 = & H8
Public Const Wavc_Format_2m0B = & H1O
Public Const Wave_Format_2m16 = & H40
Public Const Wave_Format_2s08 = & H20
Public Const Wave_Format_2s16 = & H80
Public Const Wave_Format_4m08 = & H100
Public Const Wave_Format_4ml6 = & H400
Public Const Wave_Format_4s08 = & H200
Public Const Wave_Format_4s16 = & H800
Public Const Wavecaps_Lrvolume = & H8
Public Const Wavecaps_Pitch = & H1
Public Const Wavecaps_Playbackrate = & H2
Public Const Wavecaps_Sync = & H10
Public Const Wavecaps_Volume = & H4

Type WaveoutCaps
Wmid As Integer '设备驱动程序厂商标识
Wpid As Integer '声卡厂商标识
Vdriverversion As Long '驱动程序版本号,高字节为主版 本号,低字节为次版本号
Szpname As String * Maxpnamelen '产品名称
Dwformats As Long '支持的wave格式,每一位代表一 种格式
Wchannels As Integer '返回整型值1(单声道)或2(立体 声)
Dwsupport As Long '设备支持的扩展输出功能
End Type
3. 在窗体的声明节内增加两个函数:
'函数 listwaveformat 检测波形音频支持的格式
Public Function Listwaveformat(Aboutwave As long) As String
Dim Waveformat As String
Select Case Aboutwave
Case Wave_Format_1m08
Waveformat = "11.025khz, Mono, 8bit, 11kb/Ps"
Case Wave_Format_1m16
Waveformat = "11.025khz, Mono, 16bit, 22kb/Ps"
Case Wave_Format_1s08
Waveformat = "11.025khz, Stereo, 8bit, 22kb/Ps"
Case Wave_Format_1s16
Waveformat = "11.025khz, Stereo, 16bit, 43kb/Ps"
Case wave_Format_2m08
Waveformat = "22.05khz, Mono, 8bit, 22kb/Ps"
Case Wavc_Format_2m16
Waveformat = "22.05khz. Mono,16bit, 43kb/Ps"
Case Wave_Format_2s16
Waveformat = "22.05khz, Stereo, 8bit, 43kb/Ps"
Case Wave_Format_2s16
Waveformat = "22.05khz, Stereo, 16bit, 86kb/Ps"
Case Wave_Format_4m08
Waveformat = "44.1khz, Mono, 8bit, 43kb/Ps"
Case Wave_Format_4m16
Wavcformat = "44.lkhz, Mono, 16bit, 86KB/Ps"
Case Wave_Format_4s08
Waveformat = "44.lkhz, Stereo, 8bit, 86kb/Ps"
Case Wavc_Format_4s16
Waveformat = "44.lkhz. Stereo, 16bit, 172kb/Ps"
End Select
Listwaveformat = Waveformat
End Function
'函数 Listwavesupport 检测设备支持的扩展输出功能
Public Function Listwavesupport(Aboutwave As long) As String
Dim Wavefun As String
Sclect Case Aboutwave
Case Wavecaps_Pitch
Wavefun = "Support Pitch"
Casc Wavecaps_Playbackrate
Wavefun = "Support Playback"
Case Wavecaps_Volume
Wavefun = "Support Volume Control"
Csae Wavecaps_Lrvolume
Wavefun = "Support Left - Right Channals"
Csae Wavecaps_sync
Wavcfun = "Support Synchronization"
End Select
Listwavesupport = Wavefun
End Function
4. 修改 cmdtest_Click 事件的代码为:
Private Sub Cmdtest_Click()
Dim Existent As Boolean
Dim Consequence As long
Dim Returncaps As Waveoutcaps
Dim Rainver As Long
Dim Lesservcr As long
Dim Pname As String * 32
Dim Aboutwave As long
Dim Channel As String * 2
Dim I As lnteger
Existent = Testcard
If Existent Then
Consequence = Waveoutgetdevcaps(0, Returncaps, Len (Returncaps)) If Consequence = 0 Then
Mainver = Returncaps.Vdriverversion \ 256
Lesserver = Returncaps.Vdriverversion Mod 256
'因为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; "."; Lesserver Picture1.Print "输出声道:"; Channel
Picture1.Print "支持格式列表:"
For I = 0 TO 11
If Returncaps.Dwformats And (2^I) Then
Picture1.Print Listwaveformat (2^I)
End if
Next I
Picture1.Print "扩展输出功能列表:"
For l = 0 To 4
If Returncaps.Dwsupport And (2^I) Then
Picture1.Print Listwavesupport(2^I)
End if
Next I
End if
Else
End
End if
End Sub
5. 为 Form_load 事件加入 代码:
Private Sub Form_Load() Picture1.Cls End Sub 本程序在Win95(osr2)、 VB5企业版下调试通过,在 win3.2 下仅仅两个API函数 略有改变,照猫画虎即可。
好了,工作已经全部做完了。现在你要做的只是按下 F5.
为何乔布斯脾气怪糟 却能让一群最优秀的人为他卖命? 单页Web设计案例+技巧攻略(多图) IE10里的捕捉模式和响应式设计 在“亚马逊商店”出售自己:产品经理这么找工作 【CTO俱乐部第92期】大规模存储与电商架构演化实战分享 刘黎明:PaaS是非主流业务,要与IaaS融合 个人手机游戏开发者之死 为什么苹果的应用审核是个笑话? 程序员性格怪癖是才华横溢的表现,还是危险分子的征兆? JavaScript Source Map详解 8条学习编程的可靠建议 一周消息树:亲爱的GitHub,我们怎么访问不了你? [回顾] 2012年几大编程语言就业趋势分析 研发周报:微软无视W3C 拒绝遵循WebRTC标准 移动周报:夫妻档闯江湖 事业爱情双丰收 当服务器遇见锤子:第六届AWS全球创业大赛落幕 C# DataTable 和List之间相互转换的方法 iPad如何在三年内改变世界 划时代的成果:新DNA存储技术 轻而易举装下世界 谷歌产品设计:Larry Page的魅力革命 开源移动统计工具Countly更新 支持Unity 3D DailyCost传奇设计师访谈,彰显HTML5移动应用优势 如何成为一名架构师? Apache Hadoop集群的安全性架构 Wood Camera开发者访谈:我们如何冲到榜首的 代码审查:程序员内炼之道 Twitter Q1推广告API 收入剑指10亿 Dell:在OpenStack成熟后才会推出服务 一个开源工作者对开源与赚钱的一些想法 宏碁:Windows8仍不成功 Chrome表现令人意外 雅虎发布Q4财报 净利润同比下滑8% 关于Jmail组件的问题! 袁飞请进! redhat linux下jbuilder安装问题!!!帮帮忙!! 怎样得到一天的起始时间,例如:今天是2001-11-1,则我希望得到:2001-11-1 00:00:00 求教CEditView 华硕P2B主板怎么装联想商博士6xxx的内猫,猫是好的,可插上后怎么也找不着,怎么办? CSDN的服务器太差劲了!老是结不了分的! 有没有第二种方法加入2000的域呢?(详见正文) 时钟的实现初始化问题?? 我今天买了一本,这本书如何? 那儿有perl for win32的开发资料下载的! 我想知道鼠标在COMBOBOX上移动时所处的选项,在LISTBOX上可以实现,在COMBOBOX上如何实现,它没有MOUSEMOVE事件。 请问怎样自动捕捉网格啊? 定义以下变量,并以赋确定的值:char w;int x;float y;double z;则表达式:w*x+z-y所求的值的数据类型是什么 为什么我的treeview 值都成了双份的呢??? 哪人在线观看的源代码?比如:CIH,I LOVE YOU 怎样自动捕捉网格啊? 本人就快作毕业设计了,想作个vc项目,大家给我点意见吧! 怎么把CByteArray型数组转换成char*型. 关于纯资源DLL的问题! 超难问题:如何将一个EXE转换成SWF? 关于PHP程序员工资待遇问题的讨论! 网页中嵌入ActiveX控件,遇到的问题。 问个比较简单的问题:关于ASP上传的 送分啦~~~~~~~用什么方法可以获得鼠标的移动到那里的句柄(包括窗体和环境),就向SPY++里面的findwindows一样的功能 关于vb数据库的问题,请教了!!!!! 1982.12.12,2001.12.12是19岁生日还是20岁生日? 寻找调查投票程序,66分 在printf格式字符串中,用于输出字符串的格式字符是什么? 哪里有这样的jsp程序 轻松一分钟,统计一下看流星雨的程序员们是单身还是成双成对? c语言程序的基本单位是什么? 是什么原因产生stop:0x0000001e故障的,有办法解决吗 如何虚拟键盘输入?急!!! 请问怎样才能将用户选择的行或列在打印预览窗口中? 如何获得所运行的进程列表 设i,j,k均为int形变量,执行下列语句:for(i=0,j=10;j<=j;i++,j--)k=i+j;则k的值是多少? 怎样把kv3000解密到一张软盘????? 是高手的进来赚点分(全给) delphi中如何定义过程与函数,请帮我各写一行带参数与不带参数的例子, 有谁用过EXPRESSO开发过JSP吗 如何在MTS对象中使用现有控件? 求救!!!WINNT 4.0下无法显示中文! 请各位指导,如何查出QQ的区IP地址? .怎样将多个文件用MAKECAB。EXE制作成CAB文件 请问变量声明问题 该怎么让客户端浏览网页时自动完成对服务器端网页中ActiveX控件的注册? 一直困惑我的问题! 请问printf( "\t\b\b" )是什么意思? 如何将.EXE文件转换为.COM文件? 安装好的软件到哪去了? 苯甲酸钠和山梨酸钾两个哪个当防腐剂更健康 sin75=?求过程,求解析,求方法!给好评! 那些食物不含碳水化合物? 什么酱油不含苯甲酸钠和山梨酸钾 请问苯甲酸钠有什么危害 苯甲酸钠是防腐剂还是什么?有何作用? 防腐剂,苯甲酸钠、山梨酸钾在我国还是被允许使用的是吗?不被允许使用的食品添加剂,防腐剂有哪些? 25/28怎样约分? 不含淀粉碳水化合物脂肪蛋白质的食品? 甲乙两圆的周长比是4:5,两个圆的面积相差2.7平方分米,甲的面积是() 哪些食物含碳水化合物 哪些食物不含碳水化合物不要复制的,请一一例举,例多的加20分, 山梨酸钾和苯甲酸钠如何鉴别如题,从化学的角度如何鉴别这两者请从从山梨酸和苯甲酸各自的功能基团的角度,谢谢 以在食品中做添加剂为主,纯品的用焰色反应就够了是吧? 28分之12进行约分 如果一个圆的周长是31.4厘米,那么这个圆的面积是( )平方厘米? 食品中的苯甲酸钠的测定 有什么标准吗? 什么食物含碳水化合物? 化简求值:8sin15°cos15°cos30°cos60° 食品中苯甲酸钠如何测定(主要是样品的处理不会) 什么食物含碳水化合物多 关于健身饮食补充碳水化合物和蛋白质的问题,健身前后分别补充多少?我健身有快半年了,现在打算开始注重饮食,请问胡老师我是应该在健身前后如何补充,目前我是这样的:健身前吃一个鸡 如果两个圆的面积比是1:9,呢么两个圆的周长比是 一个圆的周长增加10%,这个圆的面积是( ) 锻炼后吃哪些食物或者饮料能补充碳水化合物 sin75°两角差的余弦公示求 圆的周长从10π增加到12π,则圆的面积增加了几? 哪些食物含有蛋白质 哪些食物含有碳水化合物 苯甲酸钠在食品的比例怎么用? 圆的周长从10派增加到12派,则圆的面积增加了多少 化了带分数能不能在约分? 苯甲酸钠是什么东西 四十二分之十六咋约分 sin15°*cos15°*cos30°=?如题,有计算方法的优先录取,是方法! 食品级苯甲酸钠和药用级苯甲酸钠有什么区别? 碳水化合物的食物有哪些? 12岁左右的儿童,一顿午餐大约需要蛋白质30g,脂肪23g,碳水化合物120g,怎样才能搭配 焦糖色作为食品添加剂可能用于哪个方面 有哪些高碳水化合物食物? 一个圆的周长和直径想加的和是20.7米,这个圆的面积是多少平方米?(π取3.14) 食品添加剂 焦糖色对人身体有害吗 什么食物里面含碳水化合物最多啊面食和米饭还有薯类这些粮食作物含碳水化合物是不是最多啊!那水果和蔬菜呢?这两个哪个最多啊? 含磷洗衣粉配方中磷酸盐的主要作用是( )a、杀菌b、去污c、抗硬水选哪个? 为什么黄酒的原料表里有焦糖色?那个起什么作用?能不能用这种黄酒做药引子? 圆的直径是20分米,圆的周长是(),圆的面积是() 焦磷酸盐的作用 【有关食品添加剂!】柠檬酸、柠檬酸钠、食用香精、维生素C、焦糖色...请问柠檬酸、柠檬酸钠、食用香精、维生素C、焦糖色对人体有什么危害?为什么?食用过多会怎么样?寒假作业,非常急! cos15度减cos30度等于? 磷酸盐在细胞内的作用是什么 人体内的热能主要来自于()(单选) A.脂肪 B.碳水化合物 C.蛋白质 D.纤维素人体内的热能主要来自于()(单选)A.脂肪B.碳水化合物C.蛋白质D.纤维素 1.这个分数的分子和分母的和是42,约分得5分之1,原来这个分数是多少?2.36小时=( )日(分数)小明行了18千米的路用了4小时,平均每小时行全程的几分之几?平均每小时行多少千米?36小时=( ) 肉类产品里的磷酸盐有哪些?各起什么作用?RT 128与625能约分吗? 一个分数约分前分子分母的和是36‘约分后是5分之4.原来的分数是().把30分之18,28分之21,49分之14,121分之22,40分之16这些分数先约分,再按从小到大的顺序排列起来. 12岁儿童早中晚蛋白质,脂肪,碳水化合物的摄入量分别是多少克啊?剩下的时间不多了! 人体内的蛋白质和脂肪能变成碳水化合物吗? 碳水化合物是什么?哪些食品算是碳水化合物? 健康成人对蛋白质、脂肪和碳水化合物的参考摄入量 苯甲酸钠和山梨酸钾能混用吗? 二十五分之四十八约分后等于多少? 苯甲酸钠有什么功效
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn