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

利用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.
非响应式手机网站页面的优化 高薪必备:Hadoop求职者的6大攻略 微软或将于四月发布“返璞归真”的Windows 8.1 Update 1 《近匠》第14期:LiveCode——全民开发工具 美团梁堰波:用SQL-on-Hadoop构建互联网数据仓库与商务智能系统 程序员游戏Style:亚特兰大极客使用机器学习玩转Flappy Bird Gleasy CTO薛珂:成立3年,企业用户2万+,移动办公蕴藏较大发展机遇 Unity Awards展区“点亮”Unity亚洲开发者大会 DevBox:最实用的移动开发辅助工具包 【技术博客推荐】创客程序员设计实现最小物联网系统 MySQL还是NoSQL:开源盛世下的数据库该如何选择 利用Hadoop Streaming处理二进制格式文件 如果没有强大的API,那么还是与OpenStack兼容吧 企业社交工具为何走向衰退? 封闭还是开放?雅虎禁止用户使用Facebook、谷歌ID登录和使用其服务 【OSTC讲师专访】罗聪翼:付出和回报在开源世界成正比 近匠:“词Ci”——全栈“女神”如何诠释倾城之美 国内首届引擎黑客松Cocos2d-x Hackathon即将开赛! 抛弃CloudStack,GoDaddy加入OpenStack PaaS平台之争:Cloud Foundry是赢家吗? 投资超140亿美元,涨幅达30%,数据密集型应用将占领第三平台 汽车开放平台:看看通用汽车是怎么做API的 Gamebase将推全新跨平台3D游戏引擎Reach3dx 借助API Telegram能否成为第二个WhatsApp 机器学习也感性:90后软妹纸的编程之路 为安防与视频监控而生 西数紫盘首发 秘闻:鲍尔默离职,或与坚持收购诺基亚有关 【OSTC讲师专访】Thomas Yao:开源社区最缺有能力的领导者 对比MySQL,你究竟在什么时候更需要MongoDB 不以“大小”论英雄,对比IBM、AWS,谁才是Hadoop界的MVP? 参加“我们都用JIRA”视频征集大赛 赢取乐视TV超级电视 一个程序调试中产生的问题 -------数据接收和发送模式的问题!(非资深程序员勿入)100分只给答的最好的 求救!关于坐标系转换问题 现在很多邮件服务器要身份验证,ASP.NET(C#)的SMTPMAIL类有设置身份验证和密码的属性吗? 怎么在基于对话框的程序中加入一幅bmp作为底图? 刚学java,碰到一问题,请 有空进来看看 showMessageDialog的使用问题 disable mainmenu控件的某个subitem怎样实现 哈哈,需要短信网关IP地址及其源代码的快来顶一下。 sybase12.0安装时的问题??? 怎么样能用asp编写使得IE打开pdf文件?在查询后怎样还能在查询的输入框里面保留查询的输入? 如何使用TreeView进行分级管理 触发器的效率问题! 寻求解决方案 组件刷新问题,UP有分 请问 虚拟目录 和 WEB站点 有什么区别? DBEXPRESS的问题!很简单 请问那里有支持中文好的jsp开发的webmail下载?很急!谢谢大家了! 我如何在程序中切换输入法 怎么把一个COleDateTime类型的变量转成time_t类型(long型)变量? 结构成员这样定义 WCHAR bString[0]; 长度为0有意义吗? 关于DLL中的函数 如何动态分配指针数组? 哪里有关于delphi多线程资料下载? 急!!!SQL2000数据库IMAGE图象数据的存取?????? 这个存储过程怎么写? D7中的这个怎不见了啊-----急急 为什么只能传递两个汉字?有解决的办法吗? 关于DLL文件中的函数 lotus菜鸟请求急就!!!!!!!! 如何动态分配指针数组? 怎样实现点击按钮,将光标所在行的某列参数传到另一个form,显示出另一个表的某条相关记录? 这句话到底有什么含义??? T-SQL连接字符串的操作符号是? 问一个送分问题。 如何得到驱动器信息? (腊肉)欢迎讨论:简体、繁体同界面显示问题 請問在水晶報表里怎樣實現這樣的設計 谁有校友录? 欢迎讨论:简体、繁体同界面显示问题 用VB写了Lable控件,但不知如何把背景是否透明的属性加入 这堆警告是什么意思? 关闭API函数? 怎么按钮的字体的颜色改变不了? 关于图像识别,急急,谢谢 用Oracle8i(个人版)连接Oracle8问题(在线) 用quickreport如何做master/detail 報表 大家请看这段代码(部分):为什么returnValue第一次返回null,第二次返回正确??百分求解 发一个笑话--跟警察牛B的人 呵 请问如何用oledb连sybase11.9.2? 菜鸟问题 请高手指点 往FeS04加氨水,开始看到的现象是什么后来在空气中露置,继续看到的现象是什么 迎春花的作文 1000 双缩脲试剂能用于尿液中蛋白质的检测吗? 妥尔油脂肪酸与妥尔油区别 函数y=sin(2x+π/6)图像的一个对称中心是 环戊烷多氢菲的分子式 井水烧开有白色液体井水烧开以后壶底有一层白色的块状...每次烧开水都有这种白色块状物体...但是水未烧以前是清澈的干净的水...为什么烧开以后就有一层白色的物体..如果喝了这样的水 已知函数y=1/2tan(2x+q)的图象的一个对称中心为(-帕/6,0),求满足条件的绝对值最小的q (1R,2R)-(-)-1,2-环己二胺 分子式,那里可以买到? 桶装方便面和桶装过桥米线各有各的什么缺点和优点呢? 告诉我制氯气的方法.不能用浓盐酸,浓硫酸,浓硝酸,但不限浓磷酸,稀硫酸,稀盐酸,稀硝酸.次氯酸钠可以吗? 这应该写什么了麻烦你请你告诉我 测气相色谱时使用溶剂必须是色谱纯吗? 关于迎春花的作文 为什么稀释浓硫酸时要把浓硫酸倒进水中? 高效液相色谱专用的色谱纯溶剂可以用于气相色谱吗? 下列离子Fe3+ Cu2+ Ag+ Fe2+ Hg+按氧化性排列顺序为? activities from following HR processes什么意思?RT 气相色谱测定残留溶剂能用稀硫酸吗 上班族午餐带饭,用什么样的保温饭盒比较好? 距离产生的到底是什么?我觉得两个人分开久了,产生的一定不是美,是隔阂,是不信任. 方便面厂拉出来的碎方便面渣子有何用处? 在电解池中阴极放电时,氧气放电能力与Ag+,Cu+等金属活动性顺序表中的金属相比谁更强? 混沌的解释是什么?要的,谢谢啦! 高一【氧化还原反应】有关离子共存问题.题目如下图.特别是必要化学反应方程式(A选项的反应方程式要写清楚)】 钠会和双氧水反应吗? 如何确定该结构的相对构型 我国井水里有什么物质我国南方某些地区的井水之后,井水由澄清变成有少量红棕色絮状沉淀积于缸底,水面上浮着一层绣皮.这两样东西是怎样产生的 迎春花作文21211221122 用E/Z法确定构型都说是按照官能团的优先次序来看是否一致,我有如下问题是否卤素次于烷基同样是卤素,BR和CL的优先次序怎么样双键是不是优于烷基H是不是比任何都要劣 混沌与秩序~英雄战歌,那个英雄最值得购买? 晶体硅和sio2晶体中的si原子为什么也是sp3杂化 OF2是极性分子,可以判定其分子构型为”V”形结构吗? 想变白反倒变黑了~怎么回事?最近白天用美加净珍珠银耳霜,晚上用片仔癀珍珠膏,一个多星期了,这几天发现有明显的黑了一个系号!:crab-1-)怎么回事嘛! 现在每天我还用白醋兑水擦脸.据说美白 氯气制取氯气与水反应生成HCI和HCIO,HCIO分解成HCI 和氧气,那氯水的酸性会增强吗 能否由氯水加热直接制备氯气?如果可以要注意事项有哪些 井水含有什么物质?它跟自来水一样吗?我家的井水对洗衣粉、肥皂,很容易过清,用自来水洗干净手上的洗衣粉洗很久都是很滑,但用井水却一瓢水手上的洗衣粉都去掉.为什么呢? 毕赤酵母有细胞壁吗?如果有的话,细胞壁的主要成分是什么呢?能有溶菌酶降解吗? 美女hr什么意思 在混沌与秩序之英雄战歌中,请问那个英雄比较厉害,推荐买哪个? 迎春花的作文要700字,不要“一到春天,百花仙子就往地上撒出许多的花蕊,而最娇小、最芬芳的花肯定当属迎春花喽!迎春花是在三月份开...”和“看着看着,我才想起来我不是迎春花,我是在看 函数y=-2tan(2x+π/3)的图像的对称中心 女人下面变黑了是怎么回事 山东省济宁市新高二化学学必修几山东省济宁市新高二化学学第几本?选修四还学吗 地质构造理论当中的‘活动论’和‘固定轮’的区别是什么 脂肪酸甲酯的磺酸盐类表面活性剂大家好,我是北京化工大学的研究生,现在做一个关于脂肪酸甲酯的课题,最近有一个疑问想请教大家.我现在有50%的液体脂肪酸甲酯磺酸钠(液体MES)从喜赫石 甲苯为什么呈黄色 枕状构造为什么能够确定地质年代?如上我差点忘了。放射性同位素可以用来确定火成岩石的绝对年龄。稳定同位素好像是判断岩石的物质环境与来源。 混沌与秩序之英雄战歌出装色龙,水人,12B出装.跪求大神指点 一道物理竞赛题 行星的退行速度和离我们的距离成正比即v=Hr H为哈勃常数.假设宇宙大爆炸个星体以不同的速度想外匀速运动,我们位于其中心则速度越大的离我们越远 用上述理论确定宇宙的 初学疑问 高温下SiO2与碳酸盐反应生成CO2高温下SiO2与碳酸盐反应生成CO2 是不是假设没有高温条件能发生这个反应就能得出硅酸强于碳酸?但实际碳酸强于硅酸,反应能发生是因为有高温? 农村很多地区使用的井水属于...A.陆地水B.地表水 为什么那么爱气求大神帮助 怎么看两个离子会不会发生氧化还原反应 请教高一离子反应和氧化还原反应, 别人气我我气别人行不行?谢谢了,大神帮忙啊 金属键里静电吸引和 阴阳离子通过静电吸引所形成的化学键,叫离子键 我想问为什么是静电,而不是电 1.石油磺酸盐和脂肪酸相比有哪些特点? 已知函数1/2tan(2x+φ)的图像的一个对称中心为(-π/6),求满足条件的绝对值最小的φ 力分解遵循的规律 “不稳定之弧”挑战全球反恐肯尼亚法官判轮奸犯割草赎罪 超百万人斯诺登请求美方宽恕 白宫说“不”(图穆尔西受审 拒穿囚服大闹法庭(图)“透明化”监听时代可能会来俄新反恐法:恐怖分子亲友将“连坐”印度今日追梦火星 否认与中国竞争白宫微博有“水军”专为奥巴马“解围”英国政府禁止内阁会议及其它敏感部门使斯诺登求美“宽大处理”被拒 在俄与德朝鲜证实海军官兵殉职美机场枪案嫌犯为“独狼”中国小伙MBA毕业 波士顿街头卖烤肉全国反“四风”开整7大问题 叫停公款武康女店主发现儿子走丢忘报警16岁少年带着理发用剪刀抢劫不成去自90后女子看老公送很多红心给别人醋意嘉兴男子家因排污管堵塞被污水淹 9户女子给骗子汇钱逼停出租车 的哥及时中杭州国际人才交流与合作大会明天开幕 多项违纪 孙杨被处停赛、停训、暂停一深圳大学迎来6903名本科新生深圳建设乳腺癌全覆盖筛查网络教师节送礼莫让老师为难促进务实合作 实现共赢发展东部华侨城开通5条巴士专线山西女篮摘得国手吴迪姚明系亚洲第一人浙江残奥健儿黄兴国曾如何批周永康等大老虎江苏省赴欧洲引进文化产业高端人才杭州峰会:让G20化茧成蝶俄反贪局“老虎”局长落网京剧名家将携国粹经典再临英伦合作之声 穿越时空世行与金砖国家新开发银行签署谅解备忘基层党员怎样做到“四讲四有”青少年信仰培育:多元文化中的价值确立在党建中贯穿以人民为中心的发展思想开掘中华道德源头活水俄美签署调解叙利亚冲突协议姚明的价值何止名人堂
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘