windows api 笔记
LuckiestShawn · · 个人记录
/* 获取 窗口缓冲区大小 窗口大小 光标坐标 */
HANDLE outputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFOEX info;
info.cbSize = sizeof(info);
GetConsoleScreenBufferInfoEx(outputHandle,&info);
// 窗口大小是从 0 开始存的
printf("[%d,%d]\n[%d,%d]\n[%d,%d]\n",
info.dwSize.X,info.dwSize.Y,
info.srWindow.Right+1,
info.srWindow.Bottom+1,
info.dwCursorPosition.X,info.dwCursorPosition.Y);
/* 设置缓冲区大小 */
COORD size = {150,400};
SetConsoleScreenBufferSize(outputHandle,size);
/* 设置窗口大小 位置 */
SMALL_RECT winSize = {0,0};
winSize.Right = 20 - 1;
winSize.Bottom = 10 - 1;
SetConsoleWindowInfo(outputHandle,1,&winSize);
MoveWindow(outputHandle,X坐标,Y坐标,窗口宽,窗口高,true);
/* 设置光标位置 */
COORD size = {5,5};
SetConsoleCursorPosition(outputHandle,size);
/* 设置光标是否显示 */
_CONSOLE_CURSOR_INFO cursorInfomations;
GetConsoleCursorInfo(outputHandle,&cursorInfomations);
cursorInfomations.bVisible = false;
SetConsoleCursorInfo(outputHandle,&cursorInfomations);
/* 设置输入输出编码并查询编码 在设置输入936前要先设置437*/
SetConsoleOutputCP(437); // US
SetConsoleOutputCP(936); // CH
GetConsoleOutputCP();
SetConsoleCP(437);
SetConsoleCP(936);
/* 设置输出颜色 */
SetConsoleTextAttribute(outputHandle,颜色16进制);
下划线:在颜色16进制后加上下划线颜色cmd编码
例:0x801f 蓝底绿字白下划线
/* 获取并设置窗口标题 */
GetConsoleTitle(字符串,字符串大小);
GetConsoleTitleA(字符串,字符串大小);
SetConsoleTitle(字符串);
SetWindowText(窗口句柄,设置标题字符串);
/* 置顶/不置顶 窗口 */
HWND window = GetConsoleWindow();
SetWindowPos(window,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
SetWindowPos(window,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
/* 移动窗口 */
SetWindowPos(window,NULL,X坐标,Y坐标,0,0,SWP_NOSIZE);
/* 鼠标指针 位置获取 移动 模拟点击 */
POINT pt = {0,0};
GetCursorPos(&pt);
SetCursorPos(X坐标,Y坐标);
mouse_event(点击类型 多个类型用'|'连接,绝对坐标X,绝对坐标Y,0,0);
MOUSEEVENTFMOVE 移动
MOUSEEVENTF_LEFTDOWN 按下左键
MOUSEEVENTF_LEFTUP 松开左键
MOUSEEVENTF_RIGHTDOWN 下右键
MOUSEEVENTF_RIGHTUP 松开右键
MOUSEEVENTF_MIDDLEDOWN 按下中键
MOUSEEVENTF_MIDDLEUP 松开中键
/* 获取指定标题窗口句柄 */
HWND outputHandle = FindWindow(NULL,标题字符串);
/* 向指定窗口发送消息 */
SendMessage(outputHandle, WM_KEYDOWN, 'A', 0);