怎么把mp3转发微信语音发出去,从技术角度分析可行性
有什么需要帮助的,看不明白的 ,可以加微信 258032791
做微信营销的朋友,很多喜欢做群营销,个人营销,
这个时候,如果人工一句句话去说,肯定能累个半死,如果每天应付几百人
能把你累虚脱,那么从技术角度上来讲,能不能实现把事先准备的文字,语音,视频转发到微信里面 ,
代替人工操作的 ??
答案当然是可以的,从技术角度上来讲,一点问题都没有,接下来我和大家分析下怎么做!
我通过技术手段实现了一个简单的例子,有兴趣的 ,可以学习下 ,
首先我们先看下效果
http://8h7s.cn/index.php/2018/10/15/wx_convert/
接下来给大家上几个图
这是我写的一个小例子,实现准备需要转发的文字,mp3音频,mp4视频
文章转发功能
视频转发功能
要实现微信多开和音视频发送的方法很多,
这个案例所用到的技术点 ,在这里列举下
1:雷电模拟器,可以多开,可以一台机器开 无数个,根据机器性能不一样,数量有所不同
2:需要用到按键精灵脚本,这个主要是接收主控程序指令
3:主控程序需要用到 api 拦截技术 ,C++通常使用detour api拦截库
接下来大家大概讲讲原理 ,因为篇幅有限,在我的微信 有对应的教材
模拟器主要是实现多开,这个没有啥好说 ,雷电模拟器还可以实现虚拟定位,硬件模拟 等接口也是开放的 ,所以非常简单
按键精灵对应的代码也超级简单 ,在这里我贴出 代码供大家参考
这里面的难点在于 如何 转发语音和 直播视频,
转发语音,首先我们先要知道模拟器,它肯定是需要录制 麦克风数据的,这个时候我们可以给
麦克风下一个hook 钩子 ,WAVEIN WAVEOUT ,这些关键的api 上钩子
typedef
MMRESULT (WINAPI *PFN_waveInOpen) ( LPHWAVEIN phwi,
UINT
uDeviceID,
LPWAVEFORMATEX pwfx,
DWORD
dwCallback,
DWORD
dwCallbackInstance,
DWORD
fdwOpen );
typedef
MMRESULT (WINAPI *PFN_waveInClose) ( HWAVEIN hwi );
typedef
MMRESULT (WINAPI *PFN_waveOutOpen) ( LPHWAVEOUT phwo,
UINT
uDeviceID,
LPWAVEFORMATEX pwfx,
DWORD
dwCallback,
DWORD
dwCallbackInstance,
DWORD
fdwOpen );
typedef
MMRESULT (WINAPI *PFN_waveOutClose) ( HWAVEOUT hwo );
typedef
MMRESULT (WINAPI *PFN_waveInPrepareHeader) ( HWAVEIN hwi, LPWAVEHDR pwh,
UINT
cbwh );
typedef
MMRESULT (WINAPI *PFN_waveOutWrite) ( HWAVEOUT hwo, LPWAVEHDR pwh,
UINT
cbwh );
//
// 修改Win32 API函数地址
//
CAPIHook g_waveInOpen(
"winmm.dll"
,
"waveInOpen"
, (PROC) Hook_waveInOpen, TRUE);
CAPIHook g_waveInClose(
"winmm.dll"
,
"waveInClose"
, (PROC) Hook_waveInClose, TRUE);
CAPIHook g_waveOutOpen(
"winmm.dll"
,
"waveOutOpen"
, (PROC) Hook_waveOutOpen, TRUE);
CAPIHook g_waveOutClose(
"winmm.dll"
,
"waveOutClose"
, (PROC) Hook_waveOutClose, TRUE);
CAPIHook g_waveInPrepareHeader(
"winmm.dll"
,
"waveInPrepareHeader"
, (PROC) Hook_waveInPrepareHeader, TRUE);
CAPIHook g_waveOutWrite(
"winmm.dll"
,
"waveOutWrite"
, (PROC) Hook_waveOutWrite, TRUE);
至此,通话过程中音频输入和输出的数据(即对方讲话和我自己讲话的声音)已经全部“偷取”到了,接下来只要将事先准备好的mp3 输送出去即可,当然有些工具偷取 录音的 原理也是一个鸟样,效果一般,但用做电话录音足亦。
有什么不明白的,可以加我微信 258032791 ,有详细教程和源码
视频数据切换 原理也是类似,当然有些人说用 虚拟摄像头VCam 也可以达到同样的效果 ,
其实用虚拟摄像头,很多虚拟机不支持,国外的 Genymotion 貌似支持,但是也不好用
这个我也测试过,大家可以去试试
HHOOK
g_hHook = NULL;
HINSTANCE
g_hInst= NULL;
//HWND g_hInst =NULL;
/*
//目标函数指针
camerahook g_hcamera=NULL;//<-capCreateCaptureWindowA函数指针
//Trampoline函数指针
camerahook r_hcamera=NULL;//<-capCreateCaptureWindowA Trampoline函数指针
*/
HWND
(WINAPI * camerahook)(
LPCSTR
lpszWindowName,
_In_
DWORD
dwStyle,
_In_
int
x, _In_
int
y, _In_
int
nWidth, _In_
int
nHeight,
_In_opt_
HWND
hwndParent, _In_
int
nID) =capCreateCaptureWindowA;
void
InstallHook();
//<-Detours钩子初始化函数
void
UninstallHook();
//<-Detours钩子卸载函数
//HWND WINAPI capCreateCaptureWindowA_mine();//<-capCreateCaptureWindowA的替换函数
//加入目标函数的Detour函数
HWND
WINAPI capCreateCaptureWindowA_mine(
LPCSTR
lpszWindowName,
_In_
DWORD
dwStyle,
_In_
int
x, _In_
int
y, _In_
int
nWidth, _In_
int
nHeight,
_In_opt_
HWND
hwndParent, _In_
int
nID)
{
int
mbox=NULL;
mbox=MessageBoxA(hwndParent,
"有程序正在启用摄像头,是否需要拦截?"
,
"提示"
,MB_YESNO);
if
(IDOK==mbox)
{
return
0;
}
else
{
return
camerahook(lpszWindowName,dwStyle,x,y,nWidth,nHeight,hwndParent,nID);
}
}
BOOL
APIENTRY DllMain(
HINSTANCE
hinstDLL,
DWORD
fdwReason,
LPVOID
lpvReserved )
{
g_hInst = hinstDLL;
switch
(fdwReason)
{
case
DLL_PROCESS_ATTACH:
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(
PVOID
&)camerahook,(
PVOID
)capCreateCaptureWindowA_mine);
//拦截摄像头函数
break
;
case
DLL_PROCESS_DETACH:
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach((
PVOID
*)capCreateCaptureWindowA,(
PVOID
)capCreateCaptureWindowA_mine);
//解除拦截摄像头函数
break
;
}
return
TRUE;
}
void
InstallHook()
{
//DisableThreadLibraryCalls(g_hInst);
// DetourTransactionBegin();
// DetourUpdateThread(GetCurrentThread());
//DetourAttach(&(PVOID&)camerahook,(PVOID)capCreateCaptureWindowA_mine);//拦截摄像头函数
//DetourAttach();// 拦截键盘记录函数
//DetourAttach();//拦截屏幕函数
//DetourAttach();//拦截麦克风函数
//DetourTransactionCommit();
}
void
UninstallHook()
{
//DetourTransactionBegin();
//DetourUpdateThread(GetCurrentThread());
//DetourDetach((PVOID*)capCreateCaptureWindowA,(PVOID)capCreateCaptureWindowA_mine);//解除拦截摄像头函数
DetourDetach();//解除拦截键盘记录函数
DetourDetach();//解除摄像头函数
DetourDetach();//解除麦克风函数
//DetourTransactionCommit();
}
原理都类似,这里就不多废话 ,大家可以去试 ,效果相当不错
怎么把mp3转发微信语音发出去,从技术角度分析可行性相关推荐
- 苹果x微信语音十秒就断_苹果12微信语音发不出去怎么办 IPhone12无法发送微信语音解决方法...
苹果12微信语音发不出去怎么办?最近很多用户遇到IPhone12无法发送微信语音,那么怎么解决呢?下面就和小编一起来看看吧! 苹果12微信语音发不出去怎么办 IPhone12无法发送微信语音解决方法 ...
- 点钞机语音怎么打开_原来微信语音一样能转发? 居然还有人不知道
微信怎么把语音转发给别人?原来这个简单啊,微信作为一款我们最常用的社交工具,无论是生活还是工作过程中,我们都能够用到微信.那么大家知道微信怎么把语音转发给别人吗?有的人肯定就会回答说:"跟转 ...
- 添加文件夹语音_微信语音导出方法大全,微信群语音转发只需3步
微信现在越来越受欢迎,因为它很大程度上方便人们分享他们的照片,生活事件,以及与他人随时随地聊天.但是如果给你一段会议录音让你整理出来打成音频文件,你是不是会感觉到头疼麻烦呢?这时候你一定会想如果能有一 ...
- 求!微信语音是怎么转发给别人的原理
最近有客户在咨询要开发一个与168社群管理工具差不多的APP软件,可以实现微信语音转发给别人的功能,可是查了很多的资料,都说是用wxpyp 这个插件来开发的,可以看了wxpyp这个开发的插件都好几年没 ...
- python发微信语音没声音怎么回事_我的微信发语音没声音怎么回事
展开全部 1.检查权限. 检查手机里装的安全软件,是否禁止了微信的权限,有的人手机重e68a843231313335323631343130323136353331333365643639启了就又能有 ...
- python发微信语音没声音怎么回事_微信发语音没声音怎么回事?
展开全部 1.检查权限. 检查手机里装的安全软件,是否禁止了微信的权限,有的62616964757a686964616fe78988e69d8331333365633964人手机重启了就又能有声音了, ...
- 电脑版微信提示音mp3_微信技巧,如何快速导出微信语音记录到电脑?无需ROOT版...
微信现在越来越受欢迎,因为它很大程度上方便人们分享他们的照片,生活事件,以及与他人随时随地聊天.但是如果给你一段会议录音让你整理出来打成音频文件,你是不是会感觉到头疼麻烦呢?这时候你一定会想如果能有一 ...
- 微信语音怎么转发给别人听_微信语音怎么转发出去?这个小技巧超级好用
你是否也常常拥有听过的语音不知如何转发给别人的烦恼?通过一起学堂即可实现语音视频轻松转播,多群转播是一起学堂最核心的产品之一,它能支持万群以上的课程同步,实现语音.图文.小视频.文件以及小程序等等流畅 ...
- c-free为什么要多输入一条_为什么微信语音不能转发?知道真相后才发现我们都错怪了微信!...
腾讯发布了<2017微信数据报告> 看了数据 小编吓了一跳 "每天有9亿用户登录微信" "发380亿条消息" "发61亿条语音" ...
最新文章
- Mybatis常用查找的总结
- Redis 笔记系列(十一)——Redis的发布和订阅机制
- python一箭穿心代码怎样复制,Python Decimal copy_sign()用法及代码示例
- Java开发面试题,Java常用类使用总结
- java 高级网络编程_java高级网络编程—客户端与服务器
- cocos2d for android,cocos2d-x for android
- WP开发笔记——页面传参
- 防火墙软件 - IPCop
- MT4API跟单、外汇API跟单接口详解
- 均值,期望和加权平均数理解和区分
- linux版虚拟示波器,借你一双慧眼——DSCope虚拟示波器评测
- Ubuntu下载软件包连接失败
- 林轩田机器学习基石--The Learning Problem
- Revit二次开发环境平台的搭建
- Debian 下 mysql workbench 报 tables could not be fetched.
- 蚂蚁分类信息系统mymps对接阿里云短信接口
- UML 构件图(组件图)
- 2023 兔年春节倒计时微信小程序源码
- 国产CAD-创物3D
- 别自学了!雪峰教你玩模块,RF射频知识轻松掌握
热门文章
- HeapSpray+ROP绕过IE8的DEP防护 ——堆喷射技术利用超星老漏洞
- Java的Set转成逗号分隔的字符串
- 【工具配置】【Windows】Cuda和cudnn安装教程(保姆级)
- 抖音评论如何放置连接_抖音如何导流到微信?学会这些,每个账号都可以用!...
- Android 30. 广播-Broadcast(一)
- Sabre选择DXC Technology来助力改变未来旅游业,作为两家公司续约多年期协议的一部分
- 列举常用字节输入流和输出流
- helm create configmap error: ConfigMap in version “v1“ cannot be handled as a ConfigMap
- Zcash halo2 背后技术衍化介绍
- 【Week9 作业】A - 咕咕东的目录管理器、B - 东东学打牌、C - 签到题,独立思考哈