原理
群发消息原理分析
微信:
方向键上下可以移动聊天对象
回车键可以发送消息
总结:只要能够在微信窗口上,自动按下键盘,就可以实现群发消息
思路
Windows操作系统是一个:消息驱动式系统 消息机制
我们按下键盘会有键盘消息,按下鼠标会有鼠标消息,这种消息相当于喊话,告诉系统用户做了什么
所以,只要能够给 微信 窗口发送键盘消息,就可以实现群发信息
函数
SendMessage()函数
语法
LRESULT SendMessage(
[in] HWND hwnd
[in] UINT MSg;
[in] WPARAM wParam,
[in]LPARAM lParam
);
解析
HWND hWnd=窗口的句柄
UINT Msg=要发送的消息
(需要的朋友可以在微软官方查看)About Messages and Message Queues - Win32 apps | Microsoft Learn
WPARAM wParam=键值(按下的什么键)。其他特定于消息的信息(一般可填0)
(需要的朋友可以在微软官方查看)
虚拟键码 (Winuser.h) - Win32 apps | Microsoft Learn
LPARAM lParam=其他特定于消息的信息(一般填0)
获取窗口名称:
就能获取了。
函数2
keybd_event()函数
语法
void keybd event(
[in] BYTE bVk
[in] BYTE bScan
[in] DWORD dwFlags,
[in] ULONG_PTR dwExtraInfo
);
解析
按下什么键:
参数一:虚拟密钥代码
参数二:密钥的硬件扫描代码(一般不用填)
参数三:控制函数操作的名个方面。 此参数可使用以下一个或多个值,
例如:按下鼠标,或是释放(弹起)鼠标。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <stdio.h>
void main()
{
// 获取微信窗口句柄
// HWND hWnd = FindWindowA(NULL, "微信");
HWND hWnd = FindWindowA(NULL, "微信");
if (!hWnd)
{
MessageBoxA(NULL, "未找到微信窗口!", "错误", MB_ICONERROR);
return;
}
else
{
printf("成功%d", hWnd);
}
// 发5个
for (int i = 0; i <= 5; i++)
{
// 粘贴消息--发送
// 按下Ctrl和v
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(0x56, 0, 0, 0);
// 松开ctrl和v
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event(0x56, 0, KEYEVENTF_KEYUP, 0);
// 休息200ms
Sleep(200);
// 下一个
SendMessageA(hWnd, WM_KEYDOWN, VK_DOWN, 0);
//发送
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
Sleep(200);
}
return;
}
// ز
// Զ
//