场景:
使用C语言实现“轰炸”效果,就是多条重复表情或信息的发送;使用场景是在QQ上面。
问题描述
1.不兼容,对于VS2022或者其他VS编译器无法实现效果。
2.代码能正常运行但无法弹出窗口进行发信息。
原因分析:
1.不兼容
这是之前的代码:在这里我们使用了FindWindow()函数和SendMessage()函数,在VS2013上面运行没有问题;但在2022编译器上就无法正常实现,后面在网上找了一下发现是这两个函数在VS2022上面有问题;
#include<stdio.h>
#include<Windows.h>
int main()
{
int Message = 10;
FindWindow(NULL, "像风像雾又像雨");//和QQ进行连接
while (Message > 0)
{
SendMessage(FindWindow(NULL, "像风像雾又像雨"), WM_PASTE, NULL, NULL);//粘贴
SendMessage(FindWindow(NULL, "像风像雾又像雨"), WM_KEYDOWN, VK_RETURN, NULL);
Message--;
}
return 0;
}
将FindWindow()转到定义可以看到:这个更像一个宏定义;
在网上查了相关函数才发现,下面的这两个应该可以实现功能:带有两个参数,对应上面函数的参数。
另外一个函数SendMessage()是不是和上面一样呢!看了一下的确是一样!
这里sendmessageA或W应该是可以正常使用的。
2.无法弹出窗口
代码运行后弹不出窗口,原因可能是运行时编译器页面会把QQ窗口覆盖掉,导致连接不上;这里我们可以先用Sleep()函数暂停一段时间然后再运行代码,在暂停的时候手动将窗口打开,让鼠标在QQ窗口这里就可以了!
解决方案:
1.将函数进行改正
使用FindWindowA()函数。
2.使用Sleep()暂停
使用Sleep()函数先暂停3秒,在这3s里将QQ窗口打开。
#include<stdio.h>
#include<windows.h>
int main()
{
int Message = 10;
Sleep(3000);//运行之前暂停3s
while (Message > 0)
{
FindWindowA(NULL, "像风像雾又像雨");//连接QQ窗口
//粘贴所复制的信息
SendMessageA(FindWindowA(NULL, "像风像雾又像雨"), WM_PASTE, NULL, NULL);
//发送信息
SendMessageA(FindWindowA(NULL, "像风像雾又像雨"), WM_KEYDOWN, VK_RETURN, NULL);
Message--;
}
return 0;
}
3.运行效果
先复制要发送的信息,然后运行代码,在设置的时间内打开QQ窗口即可!