2011-05-21 153 views

回答

3

Detours用于挂钩。使用lib钩住IAudioRenderClient接口,包括GetBufferReleaseBuffer,并从缓冲区读取数据。

+0

您是如何使用Detours挂接IAudioRenderClient的?我尝试通过IMMDeviceEnumerator,IMMDevice :: Activate和IAudioClient :: GetService。但不幸的是IMMDevice :: Activate似乎没有被调用。 – Cthutu 2013-05-08 13:45:52

-1

根据应用程序使用的播放音频的API,您可以编写一个AppInit DLL,它将包装内置的waveIn \ waveOut函数并传递音频数据。我知道这适用于waveIn \ waveOut函数,但不知道Windows 7上有哪些其他音频播放界面,以及它们是否与AppInit技巧兼容。

+0

不要使用AppInit,只需启动暂停的进程并注入DLL即可 - 无论哪种方式都很黑,但至少不会影响机器上的每个应用程序。 – 2011-05-21 21:55:07

+0

确实如此,但从图标点击开始暂停/注入很困难:AppInit选项工作得相当好。如果你想超级小心,你可以为暂停/注入技巧兼容的可执行文件做图像劫持:只是没有任何经验。 – Femi 2011-05-21 22:01:10

+0

请不要将AppInit用于任何事情,您几乎可以保证让其他应用程序崩溃,并让您的客户的生活变得不那么棒。您可以通过使用调试器API暂停进程,注入DLL,然后打开。 – 2011-05-21 22:13:43