#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
#define PC_X GetSystemMetrics(SM_CXSCREEN)
#define PC_Y GetSystemMetrics(SM_CYSCREEN)
//#define setcolor(x) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x)//x填BACKGROUND_颜色() | FOREGROUND_颜色 颜色大写 详见https://cloud.tencent.com/developer/article/1732036
using namespace std;
int mousemap[3][2]={{MOUSEEVENTF_LEFTDOWN,MOUSEEVENTF_LEFTUP},{MOUSEEVENTF_MIDDLEDOWN,MOUSEEVENTF_MIDDLEUP},{MOUSEEVENTF_RIGHTDOWN,MOUSEEVENTF_RIGHTUP}};
//0,~为鼠标左键 1,~为鼠标滚轮 2,~为鼠标右键 ~,0为按下 ~,1为弹起 for mdown() and mup()
class classkeybd
{//键盘
public:
void down(int);// 键盘放下
void up(int);// 键盘抬起
void press(int,int);// 键盘点击
bool key_down(int);// 判断这个键是否按下
};
class classmouse
{//鼠标
public:
void mdown(int);// 鼠标放下
void mup(int);// 鼠标抬起
void mpress(int,int);// 鼠标点击
void mmove(int,int);// 鼠标偏移 (Ctrl+Click for more info)
void mgoto(int,int);// 鼠标瞬移
};
class classwindow
{//窗口
public:
void win_hide(HWND);// 窗口隐藏
void win_show(HWND);// 窗口显示
void close();// 关闭程序
void setcolor(string,unsigned short);// 设置颜色 详见https://cloud.tencent.com/developer/article/1732036
HWND GetWinInfo();
void WinMinSize(HWND);//最小化 hwnd 所代表的窗口
void WinMaxSize(HWND);//最大化 hwnd 所代表的窗口
private:
DWORD setcolormod(string);
};
class classgames
{
public:
//classes
classkeybd keybd;
classmouse mouse;
classwindow window;
//functions
void gotoxy(int,int);// 光标瞬移
};
void classkeybd::up(int vk) {keybd_event(vk,0,KEYEVENTF_EXTENDEDKEY|0,0);}
void classkeybd::down(int vk) {keybd_event(vk,0,KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP,0);}
void classkeybd::press(int vk,int time) {down(vk);Sleep(time);up(vk);}
bool classkeybd::key_down(int vk) {return (GetAsyncKeyState(vk) & 0x8000);}
void classmouse::mdown(int mod) {mouse_event(mousemap[mod][0],0,0,0,0);}
void classmouse::mup(int mod) {mouse_event(mousemap[mod][1],0,0,0,0);}
void classmouse::mpress(int mod,int time) {mdown(mod);Sleep(time);mup(mod);}
void classmouse::mmove(int dx,int dy) {mouse_event(MOUSEEVENTF_MOVE,dx,dy,0,0);}//dx: 水平方向位移,正向向右 dy:垂直方向位移,正向向下
void classmouse::mgoto(int x,int y) {SetCursorPos(x%PC_X,y%PC_Y);}
void classgames::gotoxy(int x,int y) {CONSOLE_SCREEN_BUFFER_INFO csbiInfo;HANDLE hConsoleOut;hConsoleOut=GetStdHandle(STD_OUTPUT_HANDLE);GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);csbiInfo.dwCursorPosition.Y=x;csbiInfo.dwCursorPosition.X=y;SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCursorPosition);}
void classwindow::win_hide(HWND hWnd) {ShowWindow(hWnd,SW_HIDE);}
void classwindow::win_show(HWND hWnd) {ShowWindow(hWnd,1);}
void classwindow::close() {setcolor("output",15);HWND hWnd=GetForegroundWindow();ShowWindow(hWnd,SW_HIDE);exit(0);}
void classwindow::setcolor(string mod,unsigned short color) {SetConsoleTextAttribute(GetStdHandle(setcolormod(mod)),color);}
DWORD classwindow::setcolormod(string mod) {if(mod=="output")return STD_OUTPUT_HANDLE;if(mod=="input")return STD_INPUT_HANDLE;if(mod=="error")return STD_ERROR_HANDLE;}
HWND classwindow::GetWinInfo() {return GetForegroundWindow();}
void classwindow::WinMaxSize(HWND hWnd) {ShowWindow(hWnd,SW_MAXIMIZE);}//hWnd可选填games.window.GetWinInfo()
void classwindow::WinMinSize(HWND hWnd) {ShowWindow(hWnd,SW_MINIMIZE);}//hWnd可选填games.window.GetWinInfo()
主函数模板:
#include "你设置的该头文件的名称.后缀名"
classgames 名称;
int main()
{
//命令格式为: 名称.XXX
//如: 名称.window.close
}