Windows 声音处理编程(基于winmm.dll)(1)
来源:互联网 发布:邮件客户端软件 编辑:程序博客网 时间:2024/05/24 00:51
本学期选了一门《声音识别技术》,第一个作业,教授让编写一个程序,获取声卡数据,并存储成本地文件,要求使用winmm.dll中的函数。基于此,查阅了相关资料和winmm.dll的API,实现了程序,符合要求,在此留个记录。
首先,对winmm.dll的API需要有个大致的了解,刚好,在百度百科中有winmm.dll词条,可以先查阅一下,大致知道这个dll的作用,参考:http://baike.baidu.com/view/663607.htm
第二步,为了查询某个函数的使用方法,可以在Windows Dev center里搜索函数的声明(MSDN中也能查到),例如我想查midiInGetNumDevs函数的使用办法,可以在http://msdn.microsoft.com/en-us/library/windows/desktop/dd798456(v=vs.85).aspx 得到。
第三步,由于我的程序是C#做的,而midiInGetNumDevs函数是用C++写的,这存在C++和C#数据类型匹配的问题。网上有一个比较方便的小工具,Pinvoke.net插件,关于Pinvoke.net的说明,网站上这样说:PInvoke.net is primarily a wiki, allowing developers to find, edit and add PInvoke* signatures, user-defined types, and any other information related to calling Win32 and other unmanaged APIs from managed code (written in languages such as C# or VB.NET). Pinvoke.net是一个wiki,开发人员可以查询,编辑或者增加PInvoke 的特征(一些函数API),用户自定义类型和其它调用Win32和非托管的API的相关信息,并被C# 和VB所使用。网页地址:http://www.pinvoke.net/ 同时可以下载插件安装在Visual Studio 上,便于开发。
第四步,在C#中创建dll中对应的结构体。例如,当使用midiInGetDevCaps时,dll中定义的接口为:MMRESULT midiInGetDevCaps(UINT_PTR uDeviceID,LPMIDIINCAPS lpMidiInCaps,UINT cbMidiInCaps); 使用Pinvoke,获得的对应C#函数写法为:[DllImport("winmm.dll", SetLastError = true)] private static extern uint midiInGetDevCaps(uint uDeviceID, out [MIDIINCAPS] caps, uint cbMidiInCaps); ,其中MIDIINCAPS是所要重新构造的结构体,同样,通过Pinvoke可以查询到在C#中对应的结构体写法:http://www.pinvoke.net/default.aspx/Structures/MIDIINCAPS 。
通过以上四个步骤,就能在C#中调用winmm.dll中大部分的函数了。以上是准备工作,接下来的日志中继续介绍详细开发的过程。
- Windows 声音处理编程(基于winmm.dll)(1)
- Windows 声音处理编程(基于winmm.dll)(2)
- Windows 声音处理编程(基于winmm.dll)(3)
- C#调用winmm.dll播放声音_中国创造
- winmm.dll
- java调用windows DLL实现底层处理(C++编程)
- Windows 多媒体函数(winmm.dll 中的函数)汇总
- WinMM.dll 函数汇总
- WinMM.dll 函数汇总
- 基于visual c++之windows核心编程代码分析(54)实现Winlogon注入dll
- 基于visual c++之windows核心编程代码分析(63)无模块dll进程注射
- 基于visual c++之windows核心编程代码分析(63)无模块dll进程注射
- 基于visual c++之windows核心编程代码分析(54)实现Winlogon注入dll
- windows 声音处理
- Windows核心编程(十八)DLL基础
- winmm.dll 和 ws2_32.dll 简单介绍
- 基于visual c++之windows核心编程代码分析(53)在C++中嵌入汇编实现DLL注入源代码
- ALSA声音编程(英译)
- 虚拟化技术应用现状
- 让IE支持HTML5元素作为CSS选择器
- MAC地址
- C++类模板 实现顺序表 从《数据结构》(C++版) 北京科海摘抄
- 搭建SSH框架 简单示例
- Windows 声音处理编程(基于winmm.dll)(1)
- 算法——计算的灵魂(《算法》一本写了近40年的书)
- nginx 服务器的各种配制
- Android 获取经纬度
- 读书笔记-Thinking in C++-第11章 引用和拷贝构造函数
- 构造文法时表达式中算符优先级的问题
- 虚拟化技术初步概念
- static关键字对对象存储期和链接期的影响
- 数据库的一些重要概念