个把月之前我做了一款PC端录音机软件,主要是因为windows自带的录音机很拉跨,无法同时录mic和声卡(也就是无法同时录话筒声音和对方说话的声音,虽然可以通过混音器解决,但一般人很难设置)。
由于上述问题,所以就无法轻松实现微信或QQ来电通话录音。我开发的这个录音机就是解决这个问题的,用了几天没啥问题,但是另一个问题又浮出水面——
来电铃声响起,才手忙脚乱去找录音软件,启动、开始录音,有时候慌乱之中还忘了录音。所以:使用体验非常不好……
我希望:微信来电响铃的时候,自动把录音机也弹出来,实现一键接听、一键录音,这样的话使用体验会大大增强。
这么多年我一直做web开发,对桌面开发经验还是不足,对上述问题一直没有思路。直到今天在头条遇到一个四川的网友,给我留言,指了一个方向,才算是真正地把问题解决了,效果很好,我把解决方案写成文章,希望帮助到后来的朋友——
一言蔽之:通过查询windows窗体句柄来确认是否来电。
具体做法:
1、下载微软官方出品的Spy++工具,这个工具可以实时获取windows当前运行的所有程序的句柄、窗体名、类名、进程等关键信息,如下图:
2、启动这个工具后,然后拨通微信通话,等来电铃声响起“接听对话框”出现的时候,Spy软件就会出现这个对话框的窗体信息。
3、在录音机程序里创建一个timer,每秒钟查询一下是否有来电对话框,【有】则触发显示录音机窗体,【无】则在通知栏保持静默。
代码片段
来电时 录音机弹出的实际效果
程序即方法,方法知道了实现起来就十几分钟的事儿,希望这篇文章的解题思路能帮到后面的朋友。
扩展阅读:
关于录音机软件本身实现的文章,核心知识点:同时录Mic声音和声卡声音,然后通过ffmpeg进行音轨合并。