C语言编程实现QQ窗口的控制,做出闪烁,左右摇晃(摇头),上下摇晃(点头),弹弹球,跟随鼠标移动的动作。
本程序纯属娱乐,没有什么实际意义。目前只想到这些,以后想到再补充进来
#include
// 屏幕宽度
#define SCREEN_WIDTH 1920
// 屏幕高度
#define SCREEN_HEIGHT 1080
// 打开QQ
void openQQ()
{
if (FindWindowA("TXGuiFoundation", "QQ") == NULL) {
// 首次打开QQ会自动登录,如果设置了自动登录的话;所以先启动一个QQ让它自动登录,登录后会自动贴边隐藏(我这是这种情况,如果不是,这一步if代码块可以注释掉)
ShellExecuteA(0, "open", "\"D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe\"", 0, 0, 1);
// 留给一个足够的登录时间
Sleep(5000);
}
// 再次启动一个QQ登录窗口
ShellExecuteA(0, "open", "\"D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe\"", 0, 0, 1);
}
// QQ窗口闪烁
void blinkQQ(HWND win)
{
printf("麻花藤眨眼睛\n");
// 循环10次,每次循环闪烁一次,间隔500毫秒
for (int i = 0; i < 10; i++) {
ShowWindow(win, SW_HIDE); // 隐藏窗口
Sleep(500);
ShowWindow(win, SW_SHOW); // 显示窗口
Sleep(500);
}
}
// QQ窗口摇头
void shakeQQ(HWND win)
{
printf("麻花藤在摇头\n");
// 循环10次,每次循环左右来回移动一遍,每次移动间隔100毫秒
for (int i = 0; i < 10; i++) {
int x = (SCREEN_WIDTH - 495) / 2;
int y = (SCREEN_HEIGHT - 470) / 2;
SetWindowPos(win, NULL, x - 20, y, 495, 470, 1); // 设置窗口的位置和大小
Sleep(100);
SetWindowPos(win, NULL, x + 40, y, 495, 470, 1);
Sleep(100);
}
}
// QQ窗口点头
void nodQQ(HWND win)
{
printf("麻花藤在点头\n");
// 循环10次,每次循环上下来回移动一遍,每次移动间隔100毫秒
for (int i = 0; i < 10; i++) {
int x = (SCREEN_WIDTH - 495) / 2;
int y = (SCREEN_HEIGHT - 470) / 2;
SetWindowPos(win, NULL, x, y - 20, 495, 470, 1);
Sleep(100);
SetWindowPos(win, NULL, x, y + 40, 495, 470, 1);
Sleep(100);
}
}
// QQ窗口弹球
void pinBallQQ(HWND win)
{
printf("麻花藤玩弹弹球\n");
int count = 0; // 反弹次数
int x = (SCREEN_WIDTH - 495) / 2;
int y = (SCREEN_HEIGHT - 470) / 2;
int _x = -1; // x轴方向 -1向左 1向右
int _y = -1; // y轴方向 -1向上 1向下
while (count < 50) {
if (x <= -30) { // 碰触左边界,因为窗口左右有30像素的透明区域,所以不是0,而是-31
_x = 1; // 开始向右运动
count++; // 反弹次数增加1
printf("第%d次反弹\n", count);
}
if (y <= -75) { // 碰触上边界,因为窗口上下有75像素的透明区域,所以不是0,而是-75
_y = 1; // 开始向下运动
count++; // 反弹次数增加1
printf("第%d次反弹\n", count);
}
if (x >= (SCREEN_WIDTH - 495) + 30) { // 碰触右边界,这里要减去窗口的宽度
_x = -1; // 开始向左运动
count++; // 反弹次数增加1
printf("第%d次反弹\n", count);
}
if (y >= (SCREEN_HEIGHT - 470) + 75) { // 碰触下边界,这里要减去窗口的高度
_y = -1; // 开始向上运动
count++; // 反弹次数增加1
printf("第%d次反弹\n", count);
}
x += _x * 10; // 改变x轴坐标
y += _y * 10; // 改变y轴坐标
SetWindowPos(win, NULL, x, y, 495, 470, 1); // 设置窗口位置和大小
Sleep(20);
}
}
// QQ窗口跟随鼠标
void followMouse(HWND win)
{
printf("麻花藤跟屁虫\n");
POINT p; // 位置坐标变量
int x = 0, y = 0;
p.x = 0; // 初始化x坐标
p.y = 0; // 初始化y坐标
while (1)
{
GetCursorPos(&p); // 获取鼠标当前坐标,存入p
if (p.x > SCREEN_WIDTH - 495)
{
x = p.x - 495;
}
else
{
x = p.x;
}
if (p.y > SCREEN_HEIGHT - 470)
{
y = p.y - 470;
}
else
{
y = p.y;
}
SetWindowPos(win, NULL, x, y, 495, 470, 0); // 移动窗口位置
Sleep(20);
}
}
// 移动QQ窗口
void moveQQ()
{
HWND win;
// 这一步是获取窗口句柄,所有针对窗口的操作都要用到这一步获取到的句柄win
win = FindWindowA("TXGuiFoundation", "QQ");
if (win == NULL)
{
printf("麻花藤玩失踪\n");
}
else
{
printf("找到麻花藤了\n");
blinkQQ(win);
shakeQQ(win);
nodQQ(win);
pinBallQQ(win);
followMouse(win);
}
}
// 关闭QQ
void closeQQ()
{
// 这个操作会把所有QQ进程都杀掉
system("taskkill /f /im QQ.exe");
}
void main()
{
system("color 02");
system("title 操控麻花藤");
openQQ();
Sleep(3000);
moveQQ();
system("pause");
}
C语言调戏QQ窗口
今天要分享的就是这么多了,下次接着分享,虽然写的不咋滴,但是记得点赞哦~