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

利用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.
VB6制作Win98风格的工具栏 VB实现窗口的弹出式菜单 用VB做个漂亮的进度条 Cool 3D 浮動按鈕的模擬作法-VB资料 VB 5.0中实现鼠标拖放 VB5.0下工具条的制作 VB5.0中基于桌面的屏幕技巧 VB5.0中实现字体闪烁效果 VB5实现窗口图像缩放、滚动技巧 VB6.0动态加载ActiveX控件漫谈 VB编程步步高-表单篇 VB编程常见问题 VB编程中如何锁定鼠标 VB创建位图菜单 VB实现按钮浮动效果 VB应用程序中的工具提示和状态显示 VB中处理长列表框项的两种方法 VB中多级下拉列表的实现 VB中防止将重复项目添加到列表框控件中 VB中实现菜单分割 VB中实现带预览的对话框 VB中实现同一窗口的多个实例及控件的动态增减 VB中阴影字体的实现 VB自定义数据结构的传输转换 Visual Basic 窗体背景花纹的实现 Visual Basic 中的界面设计原则和编程技巧 Visual Basic 中文本框处理技巧集萃 Visual Basic 中字符淡出淡入的实现 Visual Basic窗体背景花纹的实现 Visual Basic下工具条的制作 Visual Basic中的界面设计原则和编程技巧 我在SQL2000中有个字段类型是SMALLDATE,与CEDIT控件联结后,类型是CTIME,但显示不出? 我该怎么学? 怎样让我的程序运行时,始终在最前面 散分!!!回到CSDN!! 经常在运行屏幕保护时VC6.0 就出现了运行错误 嘻嘻~`问同学借了一台数码相机回家,自已拍了几张房间里的照片.大家有兴趣的就去吧!小A房间大暴光 请众位大侠,能不能强烈的推荐一本关于Delphi入门级的经典著作!谢谢了!推荐者必有分 请教! 关于Win32下的字符串操作 菜鸟提问,估计大家都会,指点一下 为什么我用ie的时候,新打开一个页面,他的还原形式的大小总是最小化的? var oXL = new ActiveXObject("Excel.Application")这句话有什么问题? 高分求算法 如何根据IP来得的到对方的操作系统类型 怎么这么老套,大家想想办法啊! 我要学DirectX了,请大家帮忙找一些这方面的资料。 关于出错信息的问题,多谢指教! Csdn,为什么你现在不忙了! asp.net的优点到底在哪里 大家能否推荐几本无线应用方面的书(如:短信编程、WAP编程), 谢了! 最基本问题 哪位写过控制摄像头的例子, 如何使用XP的远程桌面管理?远程控制. float 5.29 显示出来会是什么? 要不要学c++ 不能保存文件了,怎么回事? CString的一个问 在vs,net中创建用户控件和组件有什么区别? Lotus Notes and Domino与LOTUS 1-2-3有什么差别? 问路 JBuilder中类找不到 Montaque,看到后请进,问题有点菜,但希望你尽快回答! 大家帮帮我啊谢谢 private的意义是什么呢? 这是怎么回事啊,经常遇到的问题 请问windows编程和windows网络编程哪种编译器最好 新手提问--初装redhat7.2问题多多 请问如何在iis中提供证书认证?急! ASP.NET能不能用记事本写?! ??如何获得在DataGrid控件中选中一条纪录的消息?? 在win2000上调试好的程序,为什么到了xp的iis下面关于access数据库写入的页就打不开了? 不通过键盘,不通过初始化,不用SetWindowText(),如何向一个编辑控制加字符串 maya里的动画如何渲染? 数据库中的超键是什么意思? 组件如何发布? 一个小问题(请斑竹不要删) 菜鸟提问:怎样才能在编程中把一个数据库生成一个HTML文件! long型能转换为int型么? datagrid中RadioButtonList被自动选择问题? c#中如何比较两个string的大小,如"AB">"AA" return * this 问题 人口过快增长会给国家造成哪些压力?人类的哪些活动会导致水污染?如题 many,much的最新反义词是什么much 不是 little many 不是few除了这个还有什么 蛇的牙齿有毒吗?蛇的牙齿有没毒!他的毒液是从牙齿里输出吗? 用一般现在时介绍你和家人是怎样度过春节的(英语)急,急,急 各位精通英语的哥哥姐姐们, 弟子规圣人训什么意思急用帮帮忙 想找一些英语的动画片,最好有剧本 春节用英语对家人说的一句话 弟子规是儒家的吗?它的里面有一句:圣人训:的圣人指谁?又有什么关系呢? 有人知道美国动画片《新三只小猪》的英文剧本? 弟子规总序的第一章是从哪到哪啊 弟子规,圣人训,下一句是什么 造句,有水平点幸福是贫穷中相濡以沫的一块糕饼,患难中心心相印的一个眼神.仿写这个句子 第六题, 弟子规圣人训 背面滑滑黑色,腹部黄色的小蛇是什么蛇,有毒么? 第六题 弟子规,圣人训 神学(包括上帝,佛,道)除了心理上(可以归类为心理学哲学)到底能不能给个人以实际的帮助 弟子规内容 东阿拉伯语的朋友帮我看看这是什么意思 是否可以推荐一些神学、哲学、心理学的书籍?(与EVA挂钩的) 第6题, 哪位朋友帮我看看这两句阿拉伯语什么意思? 心理学和哲学,在学术上结合得紧密么?它们是怎么结合的? 弟子规谁有 整样捉有毒的蛇要安全!能否再详细一点 英语翻译我有格朋友在国外,英语不好,请问有能直接翻译整句汉语的发音词典啊? 2012年世界末日电影?2012年世界末日电影 哪里可以看?不要预告片 刚才抓了一条蛇,不知道是否有毒,请问是什么蛇? 为什么会要求具备这三种学问:哲学、心理学、金融学.而且重要性是这样依次排列的. much的反义词 请问一下这是什么蛇,在家里抓到的,有毒没毒? 1英汉双解高级词典是不是分别用英语和汉语解释一个英语单词2《中学英语语法》在市里的新华书店能买到吗 very much 反义词 抓到条蛇, 中西方文化的矛盾以前喜欢中国古典文化,现再则更倾向於西方文化,注意:是倾向一些,更注重的还是中国文化,比如说:以前喜欢故宫类型的建筑,现再比较喜欢欧州建筑风格等等等等……… too much的反义词?太少?有too little这种表达吗?顺便帮我讲一下little、less、much的用法吧~ 哪里有弟子规全文 "随便"的英语怎么说 和家长的对话写—遍150多字的作文. 弟子规 全文全文,尽量有翻译(谢谢) "我们离得好远"用英语怎么说 这个英国男孩姓格林名叫汤姆英语怎么写?这个英国男孩姓格林英语怎么说我的意思是整句话的意思 弟子规多少为一则 要弟子规的全文,坚决不要它的意思.有意思的不给分.好的多给. 请问广大网友哲学里的"范畴"是什么意思?在哲学里"范畴"这个词常常出现,但我就是不知道它的确切涵义,望广大网友帮帮我. 弟子规里面的一个问题弟子规 圣人训 首孝悌 次谨信泛爱众 而亲仁 有余力 则学文出 则 悌为什么经常有人把这个悌打成弟字?仅仅是因为打错了? 《苏菲的世界》 中按顺序分别提到哪几个哲学家、谢谢哈~~ 什么是哲学范畴 全国大学英语四级评分标准 各个题几分 苏菲的世界中苏菲和席德到底是怎么个关系啊?苏菲就只是席德的爸爸写的小说中的人物?席德的爸爸为什么那么神奇? 英语四级的每大题分值是多少 09年英语四级的评分标准是怎样的啊?09年英语四级的评分标准,就是每道题的每个小题多少分. 在《苏菲的世界》一书的最后,那本书已经结束了,为何还有关于苏菲与艾伯特的故事继续呢,请教作者是何用有没有比较权威的答案? 请写出四种会导致水污染的人类活动 CET4的每道题目的评分标准是怎样的? 为什么蛇的牙齿会有毒?还是最毒的,而人为什么没有 大学英语四级的每大题的分值各是多少每题的具体分值 求高手写以家长的角度写一篇作文主要内容是孩子入学考试时成绩中等、通过老师、 、 、 、的栽培在第一次月考中取得优异成绩、表示感谢、对学校高效课堂的学习方式表示赞赏.再在结尾 请问这是什么蛇,有毒么,现在还是幼蛇,还没长牙,应该怎么饲养,喂些什么,现在小蛇不张嘴吃东西,应该怎么灌喂
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘