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

利用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.
开源框架TAAE发布 快速打造iOS音频应用 如何学会600多种编程语言 “第五届中国云计算大会”将于2013年6月5-7日在京召开 Ridiculous Fishing:游戏遭遇山寨如何一雪前耻 老游戏的今天:Doodle Jump每周进账2万美元 剑指Evernote 谷歌正式推出Google Keep 开源的JS MVC框架 Backbone.js 1.0发布 前Facebook资深员工王淮给技术创业团队的十点建议 微软发布Windows Embedded 8系列操作系统 Google Play 4.0抢先体验 中国 vs. 非洲:移动医疗的前世今生 Java大数据框架初创企业Concurrent获400万美元融资 基于Edge Animate开发CSS3 Animations 后端服务商Firebase发布全新iOS SDK [爆料]百度云或在秘密打造实时移动Web App开发框架 打造最佳开发团队的几点建议 Facebook与开发者交恶 扼杀第三方应用 负载大逃亡:四十二路怪兽联军及七条逃生法则 那些年,MIT技术男们奇妙的黑客作品 深度分析:腾讯3.3亿美元收购Epic股份值吗? 传下一代iOS或将推行扁平化设计 iOS开发者注意:苹果将拒绝访问UDID的应用上架 领先Google、Amazon、Dropbox,Apple云存储用户最多 传IBM重新设计晶体管 预计五至七年内成熟 快讯:云计算大会6月召开 云计算概念企业股票飙升 集成开发环境:Qt Creator 2.7.0发布 移动周报:“今日头条”CEO,爱冒险的技术宅 从China Daily的iPad版,看中国纸媒如何摆脱“旧情结” 天睿推出大数据探索平台:“开箱即用”的数据分析 Basho开源Riak CS,与AWS S3兼容的云存储架构 MongoDB Days北京杂记 delphi的报表问题 (急急急,线上等待) ora8i的安装问题,急! go命令为什么没效果 Query的设置? 回答过菜鸟级问题-我做的FLASH动画在有些机器上无法显示的请接分。再次感谢 给点意见!!! 求救,如何限制用户下载!!!内有详细说明.分不够可以在给!!! 請問怎樣用代碼得到一個dw控件的 dw 對象并messagebox出來? ★★★算法讨论:如何识别红眼和消除运动模糊★★★ 兄弟们,帮我啊!~ 紧急求助:请问如何在MFC程序中调用自己编写的C++类 请问谁有组卷的算法,急用,多谢! 急!!!关于FileSystemObject问题,在线等 求面积 鼠标在视图和用非模式对话框交互绘图 在.login中怎么设置汉字的位数? oracle9i的安装文件都有什么?望高之!急! 如何用window.open弹出一个屏幕居中的窗口? 大侠们,在线求word200文件密码破解,急!!!!!!!!!!! ccnet(苦海放歌) tdl982324(石井坚) ( ) wanghr100(灰豆宝宝.net) possible_Y(◎)(◎)←(这是眼镜,不要想歪了)请接分 ccnet(苦海放歌)yaoxuefeng(锋雨者)brainf(后街)请接分 配置节的type的第二个参数的含义 报表问题。 最近在找个网站管理系统,各位能否给个建议 windows2000的奇怪问题 关于如何自定义组件问题 有关windows 98自动重起问题。 ListBox问题 VFP8.0中的数组问题,高手和用过的人来看看! 数据库的移植问题? 重新开机时常常变成"大图标",怎样设置使WIN2K所有磁盘(c,d,e盘)上的所有文件夹和文件以"列表"显示,就是让"查看"->"列表"固定? oracle9i的安装文件都有什么?望高之!急! 哪位有没有SCJP培训的录音或其他教学的好东西阿 MSComm控件在设计时运行没问题,但打包后装到别的机子老是出现“没有注册类”,求救? delphi 做的数据库应用程序如何移植?? copysign怎么用啊? 如何将一个网页的所有链接均自动加为绝对链接? 技术与数学的问题 本人写了一个设置纸张方向和大小的函数,其中MyDevMode.dmPaperSize = psize '若vbPRPSA3 设置纸大小为A3,但在VB对象库中找不A2张对应值 tomcat4.1.24中的sevlet问题 我下载了linux的iso文件,可怎么安装啊!! 我想问一下,有关于计数器的相关的信息? 救急:是否可以在两个页面(两个单独打开得ie浏览器页面)传递参数,如何实现啊? JDBC相关的两个问题 Oracle8.1.6怎样连接SQL SERVER2000 ?(在线等待) inserted表问题 急!!!关于FileSystemObject问题,在线等 dll 编译问题 请教 请教关于iterator与container? 谁有mixerAPI的中文资料,如(mixerGetLineInfo)我需要弄懂原理(不需要MSDN) 请问“怎么样才能修改以有的flash文件”,拜托,在线等待 千军万马( )成语接龙越多越好! 我是1984年9月17日早上6点多钟出生的,能给我算一下婚姻和事业吗?男的啊,阴历的 树蛙属于什么生态系统? 我想问一下亚细胞定位在叶绿体中的基因转入没有叶绿体的物质中可以表达吗比如亚细胞定位在叶绿体中的基因转入到酵母中表达,可以发挥功能吗,为什么 17:51是早晨还是下午? when she()nexttime,i()her everthingA is going to come,shalltell Bcomes,willtell 英语语法-句子-划分成分 求一字之师,以下均为划分句子成分疑难(先),括号内需特别解释(再)!求一字之师,以下均为划分句子成分疑难(先答),括号内需特别解释(再解),如阁下也有不 我国现行宪法的正文主要包括( ) A.总纲 B.公民的基本权利和义务 C.国家机构 D.国旗、国徽、首都 altium designer 元件库part A part 以及怎么删除 尊敬与爱戴的区别 求宪法重要地位和法律效力的认识 Fish ____ the sea bed.填介词 什么样的老师是你最爱戴的尊敬的? 在新的历史条件下如何建设和谐校园 有诗意的词句,类似陪君醉笑三千场,不诉离殇.这样的 荷兰也是海洋强国,为什么干不过英国?西班牙、法国这些陆上强国海战不行,PK不赢英国,这没什么奇怪的.但荷兰素来以海洋立国,号称海上马车夫,民众历来在海上吃风饮浪,从来不缺少训练有素 在新的历史条件下,如何坚持立党为公,执政为民? short的中文是什么? 神是生物吗? 青菜虫有叶绿体吗急 “short”汉语是啥? 求考神, 为什么菠菜中的叶绿体比青菜中多 黄河中所有的黄河鲤鱼是一个生态系统吗 在下面的括号里填上奇数.你发现了什么?给20财富12=()+()12=()+()+()+()12=()+()+()+()+()+()12=()+()+()+()+()+()+()+()你发现了什么? 用高倍显微镜观察青菜叶肉细胞,可见双层膜的叶绿体.为什么不对 晋江是泉州市的母亲河.下列能构成一个生态系统的是( )A.晋江中所有的藻类植物 B.晋江中所有的生物及其生活环境C.晋江中所有的动物和植物 D.晋江中全部的水、泥沙和矿物质 74( )3有几种填法在括号里填上三的倍数越快越好第一加10财富还选为满意回答 造句,前面说因为什么,后面是所以有的.有的.有的.有的.快点,我等着呢 想要涵慧弦的播客链接谁帮忙找一下 全国人大是否属于国家机构 原生质层是否相当于细胞膜,用热水洗蔬菜时,水变绿原因是:a原生质层失去透过性b细胞膜叶绿体膜失去透过 涵惜慧和涵惜叶是姐妹吗? 在括号里面里填一个歇后语,我是小学生,不要说一些废话可以么?我给你们20财富悬赏为了"六一"文艺汇演能够取得成功,同学们每天都要进行一个多小时的刻苦训练,这真是( )啊.在训练的过 1.两个形状相同的金属球,甲带正电,用电量为Q1.乙带负电,电量为Q2.且Q1大于Q2,当甲与乙相互接触后出现( 甲、乙都带正电).为什么?电子转移不是到一方呈中性(不带电)就不再转移了吗?这 涵惜慧还有一个姐妹叫涵惜岚 电焊,亮红色的熔池覆盖药皮吗. the same as 的as是介词还是连词.Without a doubt,Bill Gates belongs in the same class as Thomas Edison,Alexander Graham Bell,and other great minds who changed the world.这个as呢..分析下这个句子 turn on a 礼乐射御书术与诗书礼易乐春秋有区别吧为啥都叫六艺 NBA讲解里经常听到what a short(不是shot的发音),到底是what a 什么啊 Wo ist Konstanz? 拉面和大肉面有什么区别就是多几块肉? Do the same ______ the other leaves.(填介词) wo d ad asd sadas das 用面筋机活面面筋多,淀粉少, 在表达“同龄”时,at the same age 与 the same age 中加了介词at 和不加有什么 区别吗在表达“同龄”时,at the same age as 与 the same age as 中加了介词at 和不加有什么 区别吗 一座桥,名为奈何;一条河,名为忘川.三生石畔,伊人仍旧.愿,陪君醉笑三千场,不诉离殇; 地球是无私的,他向人们慷慨的提供矿产资源,但是,如果不加节制地开采,地球上的矿产资源必将越来越少,修改病句 和short读音一样的单词 W开头的 第一数学归纳法起源问题我听到关于第一数学归纳法有两种说法,一是先有一个意大利数学家提出了最小数原理(自然数集合任意一个子集中都有数值最小的元素),这个不能证明,而由这个可 ''五经''指的是诗丶书丶礼丶易和什么 实现共同富裕的关键是什么 数学归纳法有分第一数学归纳法,逆向归纳法,螺旋归纳法,二重数学归纳法!(1)当n=1,2时,命题成立!(2)假设n=k且n=k+1,命题成立.可以推出n=k+2时成立,命题也成立!这种方法能证明对n为正整数时命 underlined 的意思 锦鲤鱼和鲤鱼可以杂交吗? 实现共同富裕,关键是?C.帮助贫困地区贫困人口发展经济D.完善分配制度我觉得D更正确. underlined的意思 黄河金生态鲤鱼怎么样 实现四个现代化,达到共同富裕的根本前提是什么? 杭州大学生创业三年计划 最高可获25杭城中“霾”伏,昨晚能见度不到1公里先治水 广植绿 晚建城 宁波杭州湾新冲上云霄不容易 空军招飞初检一半卡在快递业欲借\"双十一\"重分市场 背多地实行公租房并轨试点 经适房或退出男子越野车启动将蹲在车前两小姑娘卷进崇信修和睦 行道有亲邻——中国睦邻外记者调查转基因食品渗透情况:新西兰澳德国大使馆:\"德国空置房组织流浪汉中国少数民族歌舞走进巴西安邻兴伟业 善邻谋致远——中国安邻外韩国电影节女星清凉上阵拼性感(组图)美一涂鸦街区将拆迁 艺术家联名告开发2013年是“男”还是“女”?斯诺登将在俄“遥助”德国 作证“监听加拿大暴风雨30多万人受影响网友自制“2014节假日放假表” 比专家:中国九成以上大豆油是转基因产品委总统微博掉粉 谴责国际右翼势力插手汤加发生6.4级地震标题导航元谋投587万推广“智能”灌溉滴灌代标题导航标题导航百年天安门(17)标题导航标题导航拉网排查绘制欠薪风险“晴雨表”“MH370终结在南印度洋”观点摘编标题导航《卫子夫》要出英语版明日我省最高气温将“奔二”《分歧者》与《饥饿游戏》的异同中国咖啡走出“价格寒冬”产业突围仍不标题导航宝马撞自行车1人亡推进融入生态理念“药儿园”收编公办,恐怕是吃错了“药洒水车撞车后侧翻,压瘪小车20人出国留学
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘