目录
主要思路
- 确定发送信息的次数,可以用int类型的变量
- 确定要发送信息的对象,利用windows.h库连接对应的窗口
- 将复制的内容粘贴在发送区,并发送
- 根据步骤1确定的次数重复步骤3
代码实现
#include <stdio.h>
#include <Windows.h>
int main()
{
int Message_num;
scanf_s("%d", &Message_num); //根据命令行输入的数字设置发送信息的次数
//int Message_num=2;//也可直接设定发送信息次数
HWND window; //定义一个窗口句柄变量
window=FindWindow(NULL, "明月"); //设置发送对象,将对应窗口赋给window
while (Message_num > 0)
{
SendMessage(FindWindow(NULL, "明月"), WM_PASTE, NULL, NULL); //粘贴
SendMessage(FindWindow(NULL, "明月"), WM_KEYDOWN, VK_RETURN, NULL); //发送
Message_num--;
}
return 0;
}
分段描述
头文件
#include <stdio.h>
#include <Windows.h>
第一个是常用的输入输出库
第二个是窗口库,这个库可以做连接窗口,发送信息的一些操作,下面我们将会详细讲解其中用到的两个函数
变量设置
int Message_num;
scanf_s("%d", &Message_num); //设置发送信息的次数
HWND window;
window=FindWindow(NULL, "明月"); //设置发送信息对象,只需要将"明月"改为所要发送信息的窗口名称即可//此处要修改默认字符集,详细操作请看注意事项
设置两个变量,一个是int类型,一个是HWND类型,HWND类型属于windows.h库内
FindWindow("窗口类名","窗口标题名"),在本例中就是用到窗口标题名查找对应的窗口,窗口类名可以填"NULL",通过这个函数我们就可以连接到要发送信息的窗口对象,本例中也就是昵称为明月的用户,连接窗口后方便我们进行下一步的粘贴和发送。
循环
while (Message_num > 0)
{
SendMessage(window, WM_PASTE, NULL, NULL); //粘贴SendMessage(window, WM_KEYDOWN, VK_RETURN, NULL); //发送
Message_num--;
}
循环次数为我们输入的数,这个数也就是发送信息的次数。
SendMessage("指定要接收消息的窗口的句柄","指定被发送的消息","指定附加的消息特定信息","指定附加的消息特定信息")
WM_PASTE就是将剪贴板中的内容粘贴到对应窗口的发送区,本例对应窗口就是window.
WM_KEYDOWN:当一个非系统键被按下时该消息发送给具有键盘焦点的窗口(凡是ALT和其它键一同按下的组合称为“系统键”,非系统键就是不按下ALT键时的按键,比如单一按键)
VK_RETURN:虚拟键盘代码,代表回车键,此处也就是非系统键。
注意事项
本例编译环境为VS2019
- VS2019在使用scanf输入时会产生报错,将scanf换成scanf_s即可。
- 本例测试利用企鹅测试,测试前请复制相应的内容
- 需要修改默认字符集为使用多字节字符集,否则会导致无法连接到窗口,无法达到效果
右击阴影处,选择属性
字符集的设置也可能在常规里,版本不同位置可能会出现一定差异