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

利用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.
亚信CFO武军谈进军海外市场成功经验 前瞻性思维是开路先峰 Swift,任重而道远! DevOps系统的变迁 玩转Docker镜像 “扫描建模”速建AR应用 Vuforia 4.0 SDK更新 硅谷里的外星人:纵观Reddit十年风雨路 不见不散 Cloud Foundry Meetup活动将首次走进杭州 独立开发者:新手做2D手游该用哪些工具? 求安全化危机!Uber研发生物识别技术、聘请前亚马逊运营 JavaScript社区开发者调查:服务端JS盛行 AngularJS使用者最多 去中心化、去中介化,微信商业化路径清晰了吗? 微信企业号认证简化了,你造吗? 专访瀚思安信联合创始人:大数据技术助力企业实现主动智能防御 挑选IBM Bluemix作为云平台的10大理由 10年技术积累成就极光压缩引擎,欧朋流量宝5.0面世 【图文实录】12月19日CTO俱乐部走进杭州 mlpack:可伸缩C++机器学习库 本地项目托管将死?类GitHub站点永存! 2014年讨论最多的编程语言:JavaScript称霸 移动Web应用UI框架大比拼:Ionic vs. Famo.us vs. F7 vs. OnsenUI 面包旅行CTO薛亮:做旅游与社交有机结合的先行者 盘点开发者最喜爱的Swift技巧 2017年,开发者还能从移动广告中收获什么? 《近匠》茄子快传,让设备更好地连接 面向移动应用程序的DevOps五大挑战和十个最佳实践 Ruby 2.2.0发布,支持回收Symbol类型对象 听UnitedStack、IBM、HP专家如何谈“OpenStack 存储”技术 专访POWER 8编程挑战赛选手孙冬冬:从C语言到人工智能、深度学习的技术演变 盘点2014:十家最酷的大数据创业公司 盘点2014:最受关注的十大云服务创业公司 基于Kubernetes构建Docker集群管理详解 请教各位高人,一个循环定义问题 Win98下为什么拦截不到从另一线程发过来的自定义消息 public class myclass 与 class myclass 一样吗? dbgrid 中,titleclick事件,如何判断选中的是 哪个字段 呢? 很简单 ADOtable 不支持 FindKey, 请教: 应该如何解决记录定位? 火急请教个“重新验证组织单元”问题! 想做一个报表但设置DataEnvironment的连接失败,不知为何错? 请教!linux下将.h和.c文件编译成动态连接库!!! 你真的懂SQL语句的编写吗?快来,我给你分 重载与模板的问题 出租魏公村西口两居之一 不知哪有好一点的聊天室,各位大虾请推荐几个小弟几个!!!! jsp里面有类似于asp的response.end语法吗? 求教各位大虾,这样的数据库程序如何实现。急切中。。。。。 vb中有没有像CommonDialog选文件的定位文件夹的控件? 怎么一次性加入多个子目录中的CPP文件到VC工程中 关于pos系统数据同步传输,欢迎大家进入讨论! 怎么得到本机的ip地址? 关于package 的问题 关于打开网页的问题 怎么在文本文件中的两行中添加一行?怎么删除一行? “split”分割问题 请教:怎么配置Tomcat可以禁止访问目录 ,比如访问 http://127.0.0.1/test 不会出现文件列表? 请问怎样在对话框窗口中的Edit控件里按下Enter键后不要退出 有关dremveaver ultradev 的动态网页制作问题, 请教高手。。 在delphi中如何实现全屏?? 100分。请大虾帮忙搞定 谁有存储过程的学习资料? 怎样判断计算机上有没有装madc数据库连接,? 项目中的一个问题,急待解决,请帮忙,谢谢 无聊散分 鼠标在图片上移动所发生的事件 一个怪问题:ping得通却NetTerm不上? JBuilder中如何拖动控件到面板,位置放置的问题。(高手指教) 请问在那里有csdn helper 下载 是否可以给表的字段编号? 我想让程序启动该怎么做 这样一个项目计划怎么写? vb.net 附值问题,请教高人 一次檢索出DataSet數據存至Session還是每次DataGrid翻頁時檢索為好? 一个程序不停的写一个文件,越来越大。怎样把以前的数据拷出来然后把他们从文件里删去? 会自动关机的电脑 怎样在listCTRL中加入彩色字?Waiting Online 请问到哪里去找w2k下编译需要的头文件和库文件呀 请问各位哪里有UNIX平台或LINUX平台的POWERBUILDER下载? 吐血给分!小问题,简单的很! 请教有关ServerSocket的问题 请问到哪里去找w2k下编译需要的头文件和库文件呀 想玩网络游戏,各位给推荐一下,谢了先!!! 请各位在这里留下已知的并已解决的BCB的BUG问题,也好让大家少走弯路了,谢谢! CMOS的问题,我是XP系统! 2011诺贝尔物理学奖获得者 我为留守儿童做什么300字作文 英文我爱你,丽丽简写怎么写 学生怎么理解“塞翁失马,安知非福”.学生价值观对吗? 会作文的点一下,300字题目为《盲人和我们》,这是看图写作,图上是一个健全人垃圾乱扔,和一个盲人:他用拐杖找垃圾桶扔垃圾.2011年1月14日前给我!谁快谁分多,+20啊. 关于和谐的作文(小学六年级500字) 宇宙将变成冰怎么回事,科学家说的怎么回事? 献你一束花答案“失败和胜利对于你同样重要”的意思“让失败属于过去,胜利才属于未来”的意思快╯﹏╰ ╯﹏╰ 求电影地球人乘飞机去火星遇到了火星人,没想到火星人非常害怕地球人前几年拍一个动画片(也算是电影吧),讲地球人第一次登上火星,然后那个人把国旗插上去的时候却发现火星上面有房 抗日战争片观后感五年级 尊严 这篇课文中描写哈默外貌、动作、语言的词语有哪些 一地球人去火星旅游见到火星人,火星人说什么? 为什么宇宙膨胀会变成冰? 献你一束花的第四自然段的叙述方法是( ). 与寒假有关的英语作文,70词 要带汉语 抗日电影观后感感人的 500字 第七课尊严,描写哈默外貌,动作,和语言的句子有那些. 让我们在从今天开始早睡英语怎么说急!!!!!! 雨过天晴,会有彩虹吗?的英文是什么 献你一束花中的“她”到底是谁?急用!作者是冯骥才.有人说是桑兰,有人也说只是代表了一种精神.可是到底是谁啊? 王阿姨骑自行车3分之2小时行了8千米平均每小时行多少千米 雨过天晴有彩虹吗? 尊严 :这篇课文描写哈默外貌.快,我要写作业 王阿姨骑自行车行9千米要5分之3小时,平均每小时行多少千米?把一根铁丝不折叠的剪断,剪五次,每段都是5分之4米,这根铁丝原来长? 骡子,马和驴的关系 献你一束花的情节曲线. 小亮骑自行车三分之二小时行了16km,照这样计算 他三小时行多少千米? 谁给我把马,驴,骡子的关系说清楚,给好评 中国抗日战争纪念馆的观后感200字 赶花——原文谁有, 中国人民抗日战争纪实片观后感! 求抗日战争纪念馆观后感!急!400字--500字 《自己的花是让别人看的》小学课本原文季羡林写的 整个宇宙将变为冰会是什么样子 《献你一束花》阅读答案,45分钟之内给我,鲜花,理应呈送给凯旋的英雄.难道献给这黯淡无光的失败者?  她一直垂着头.四天前,她从平衡木上打着旋儿跌在垫子上时,就把这美丽而神气的头垂 汽车的速度是60km/时,自行车的速度是15km/时.自行车驶的速度是汽车速度几分之几? 地球人都知道!除非你是火星人!(地球人)我家是木地板,不知怎么最近发现了小黑虫,个头跟大米一般,还长着小翅膀呢!不知是否吃木板呢?怎样去除,消灭它呢?不然的话.可想而知...它有时在地板 献你一束花 答案急用~~~~~~~~~~~~~ 《花的启示》原文急求1月31日要用,有的发一下,谢^-^ 宇宙的结局是什么? 以友善为话题的800字作文 花儿年年红 阅读原文 课文献你一束花的近义词,反义词,多音字 有关友善的作文400字 1和3是反义词的成语 献你一束花"是不是这就加重了她的思想负担?"中的"这"指的是 (用原文中的话回答),但实际指的是 (用自己的话回答) 五年级献你一束花课后问题正确答案快! (在有限数列{an}中,Sn是{an}的前n项和,若把(S1+S2+S3+…+Sn)/n称为数列{an}的“优化和”,现有一个共2006项的数列{an}:a1,a2,a3,…,a2006,若其“优化和”为2007,则有2007项的数列1,a1,a2,a3,…,a2006的“优 献你一束花 以友善为话题的作文 描写人物心里活动的句子块 跨 块 块 关于家庭温馨的场面 作文 300字以上 我爱你的英文和缩写 急 设Sn为数列{an}的前n项和,Sn=(-1)^n an - 1/(2^n),n∈N*,则 (1)a3=___ (2)S1+S2+…+S100=___ 地球人的祖先会是火星人吗人类的祖先是猿人但是他不可能是从石头里蹦出来的吧.我怀疑.火星人发现了地球.但是又舍不得自己的星球,就把一些低等生物恐龙放到了地球上去生活.但是由于 谁能告诉我 [我说] 的英文简写 比如说 我说我爱你 [两个字母]我爱你那我发誓 有没有英文简写? 设sn为数列an的前n项和,Sn=(-1)^n-1/2^n,n属于N*,则(1)a3=? (2)S1+S2+...+S100=?问题如上!求助! 塞翁失马,安知非福.——佚名 的意思 抗日战争的故事有感 要800字左右 快.......... 英语我爱你的缩写是什么?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘