WEB开发网
开发学院软件开发VC Skype录音答录机编程思路和代码 阅读

Skype录音答录机编程思路和代码

 2008-09-01 19:25:37 来源:WEB开发网   
核心提示: Waveform FunctionsThe following functions are used with waveform audio.auxGetDevCapsauxGetNumDevsauxGetVolumeauxOutMessageauxSetVolumePlaySoundsn

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个函数时系统会自动调用我们的函数,请看代码:

上一页  1 2 3 4 5 6  下一页

Tags:Skype 录音 答录机

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接