Skype录音答录机编程思路和代码
2008-09-01 19:25:37 来源:WEB开发网Waveform Functions
The following functions are used with waveform audio.
auxGetDevCaps
auxGetNumDevs
auxGetVolume
auxOutMessage
auxSetVolume
PlaySound
sndPlaySound
waveInAddBuffer
waveInClose
waveInGetDevCaps
waveInGetErrorText
waveInGetID
waveInGetNumDevs
waveInGetPosition
waveInMessage
waveInOpen
waveInPrepareHeader
waveInProc
waveInReset
waveInStart
waveInStop
waveInUnprepareHeader
waveOutBreakLoop
waveOutClose
waveOutGetDevCaps
waveOutGetErrorText
waveOutGetID
waveOutGetNumDevs
waveOutGetPitch
waveOutGetPlaybackRate
waveOutGetPosition
waveOutGetVolume
waveOutMessage
waveOutOpen
waveOutPause
waveOutPrepareHeader
waveOutProc
waveOutReset
waveOutRestart
waveOutSetPitch
waveOutSetPlaybackRate
waveOutSetVolume
waveOutUnprepareHeader
waveOutWrite
有了这些函数,我就想到了一个办法,那就是用系统钩子改变这些函数的原地址,在Skype调用这些Win32 API函数之前先进入我的程序,我将Skype的音频数据“偷偷地”拷贝一份传递给我自己的应用程序,再还给Skype,这样就可以神不知鬼不觉地将通话中的语音数据取出来,再加上自己的mp3压缩保存到硬盘文件即可。
以上便是整个Skype录音的全部思路,现在开始介绍代码。
在本程序中需要监视的Win32 API函数有:
waveInOpen – 打开一个音频输入设备(录音)
waveInClose – 关闭一个音频输入设备(录音)
waveOutOpen – 打开一个音频输出设备(回放)
waveOutClose – 关闭一个音频输出设备(回放)
waveInPrepareHeader – 为音频输入设备准备一个内存数据缓冲(录音)
waveOutWrite – 将语音数据块发送至音频输出设备进行播放(回放)
由于我们的程序需要嵌入到Skype程序中,所以我们只能使用dll的形式来编写这个程序,我现在需要写一个修改Win32 API函数地址的类,在这里我直接引用了《Windows 核心编程》随书代码中的 CAPIHook 类,我提供的源代码里就有这个类,这个类可以修改Win32 API函数的地址,当我们修改好API函数地址以后,Skype调用前面所说的6个函数时系统会自动调用我们的函数,请看代码:
- ››Skype视频通话有望CES期间登录iPhone
- ››Skype官网出现iPhone应用帮助文档,随后被删除
- ››Skype新版整合Facebook增加视频会议功能
- ››Skype 2.0.1 for iPhone 评测
- ››Skype升级iPhone版应用 支持多任务处理
- ››Skype向所有设备和台式应用开放软件开发包
- ››Skype称将推多平台:支持手机与电视视频通话
- ››Skype终于出iPhone版了 还支持3G网络
- ››Skype 2.0 for iPhone 支持3G下工作
- ››Skype 2.0 for iPhone 已经可以工作在3G模式下
- ››Skype 周四登陆 Verizon 9 款黑莓 Android 手机
- ››Skype 发布 Symbian 应用 用户可拨打免费网络电话...
更多精彩
赞助商链接