C语言调戏QQ窗口

C语言调戏QQ窗口

C语言编程实现QQ窗口的控制,做出闪烁,左右摇晃(摇头),上下摇晃(点头),弹弹球,跟随鼠标移动的动作。
本程序纯属娱乐,没有什么实际意义。目前只想到这些,以后想到再补充进来

  • 需要用到的头文件和宏定义
#include 
// 屏幕宽度
#define SCREEN_WIDTH 1920
// 屏幕高度
#define SCREEN_HEIGHT 1080
  1. 首先实现打开QQ
// 打开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);
}
  1. 实现QQ窗口闪烁
// 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);
	}
}
  1. 实现QQ窗口摇头
// 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);
	}
}
  1. 实现QQ窗口点头
// 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);
	}
}
  1. 实现QQ窗口弹球
// 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);
	}
}
  1. 实现QQ窗口跟随鼠标
// 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);
	}
}
  1. 实现寻找QQ窗口,并调用相应动作的方法
// 移动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);

	}
}
  1. 实现关闭QQ
// 关闭QQ
void closeQQ()
{
	// 这个操作会把所有QQ进程都杀掉
	system("taskkill /f /im QQ.exe");
}
  1. 实现main方法
void main()
{
	system("color 02");
	system("title 操控麻花藤");
	openQQ();
	Sleep(3000);
	moveQQ();
	system("pause");
}
  • 程序执行效果

    C语言调戏QQ窗口


今天要分享的就是这么多了,下次接着分享,虽然写的不咋滴,但是记得点赞哦~

C语言调戏QQ窗口_第1张图片

你可能感兴趣的:(C语言)