关于在控制台下模拟键盘和鼠标操作更新啦
链接: link.

你在学习c++中想要的

大多数情况和大多数学校都是让你学习C,然后你需要在控制台操作
那么怎么来改变这个控制台呢?

改变控制台相关参数

由于大多数人使用windows操作系统,我们在代码中需要包括windows.h头文件,直接调用现有的函数来进行操作

获取屏幕鼠标的位置

#include<stdio.h>
#include<windows.h>
int main()
{POINT p;POINT p1;GetCursorPos(&p);printf("%ld %ld\n",p.x,p.y);while(1){p1=p;GetCursorPos(&p);if(p.x!=p1.x || p.y!=p1.y ){printf("%ld %ld\n",p.x,p.y);}//Sleep(1000);}return 0;
}

让你的黑窗口弹出一个提示框

#include <Windows.h>
#include <tchar.h> //支持通用字符集的一些操作头文件,使用双字节或者大字符集时可以不包含它int _tmain() {MessageBox(NULL, _T("可以更改提示图标和按钮哦~~~"), _T("这是标题哈"), MB_OK |MB_ICONERROR );return 0;
}

注1: 你看到这种_T(“一段文件”),tchar.h是为了让代码的移植性更好,以便于自动适应不同的字符集

比如

获取和修改控制台的标题

#include <windows.h>
#include <tchar.h>
#include <conio.h>
#include <strsafe.h>int main(void)
{char s1[255];char s2[255] = "这是另外一个标题嘞";GetConsoleTitle(s1, 255);printf("获取控制台标题:%s\n", s1);SetConsoleTitle(s2);GetConsoleTitle(s1, 255);printf("获取控制台标题:%s\n", s1);return 0;
}

很简单的两个api(都不想写下去了,太简单了 ( ̄_ ̄|||))

其他的比如

在控制台中获取鼠标

#include <windows.h>
#include <stdio.h>  int main(void)
{// 获取标准输入输出设备句柄  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO bInfo;INPUT_RECORD mouseRec;DWORD          res;COORD           crPos, crHome = { 0, 0 };printf("[Cursor Position] X: %2lu  Y: %2lu\n", 0, 0);   // 初始状态while (1){ReadConsoleInput(hIn, &mouseRec, 1, &res);if (mouseRec.EventType == MOUSE_EVENT){if (mouseRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){if (mouseRec.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK){break; // 左键双击 退出循环}}crPos = mouseRec.Event.MouseEvent.dwMousePosition;GetConsoleScreenBufferInfo(hOut, &bInfo);SetConsoleCursorPosition(hOut, crHome);printf("[Cursor Position] X: %2lu  Y: %2lu", crPos.X, crPos.Y);SetConsoleCursorPosition(hOut, bInfo.dwCursorPosition);switch (mouseRec.Event.MouseEvent.dwButtonState){case FROM_LEFT_1ST_BUTTON_PRESSED:            // 左键 输出AFillConsoleOutputCharacter(hOut, 'A', 1, crPos, &res);break;     // 如果使用printf输出,则之前需要先设置光标的位置case RIGHTMOST_BUTTON_PRESSED:              // 右键 输出aFillConsoleOutputCharacter(hOut, 'a', 1, crPos, &res);break;default:break;}}}CloseHandle(hOut);  // 关闭标准输出设备句柄  CloseHandle(hIn);   // 关闭标准输入设备句柄  return 0;
}

注1:这个代码csdn很多人都有,放在这里是为了怕找不到
注2:不写基础的了,写的有点累,很多都是以后用不到,或者找一下就会的

设置_获取光标信息

#include <Windows.h>
#include <tchar.h> //支持通用字符集的一些操作头文件,使用双字节或者大字符集时可以不包含它
#include <stdio.h>int _tmain() {HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO ifo = {60,true};SetConsoleCursorInfo(hOut, &ifo);system("pause");GetConsoleCursorInfo(hOut, &ifo);printf("%d,%d", ifo.dwSize,ifo.bVisible);return 0;
}

检测控制台的鼠标按键信息

#include <windows.h>
#include <stdio.h>HANDLE hStdin;
DWORD fdwSaveOldMode;VOID ErrorExit(LPSTR);
VOID KeyEventProc(KEY_EVENT_RECORD);
VOID MouseEventProc(MOUSE_EVENT_RECORD);
VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD);int main(VOID)
{DWORD cNumRead, fdwMode, i;INPUT_RECORD irInBuf[128];int counter = 0;// Get the standard input handle.hStdin = GetStdHandle(STD_INPUT_HANDLE);if (hStdin == INVALID_HANDLE_VALUE)ErrorExit("GetStdHandle");// Save the current input mode, to be restored on exit.if (!GetConsoleMode(hStdin, &fdwSaveOldMode))ErrorExit("GetConsoleMode");// Enable the window and mouse input events.fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;if (!SetConsoleMode(hStdin, fdwMode))ErrorExit("SetConsoleMode");// Loop to read and handle the next 100 input events.while (counter++ <= 100){// Wait for the events.if (!ReadConsoleInput(hStdin,      // input buffer handleirInBuf,     // buffer to read into128,         // size of read buffer&cNumRead)) // number of records readErrorExit("ReadConsoleInput");// Dispatch the events to the appropriate handler.for (i = 0; i < cNumRead; i++){switch (irInBuf[i].EventType){case KEY_EVENT: // keyboard inputKeyEventProc(irInBuf[i].Event.KeyEvent);break;case MOUSE_EVENT: // mouse inputMouseEventProc(irInBuf[i].Event.MouseEvent);break;case WINDOW_BUFFER_SIZE_EVENT: // scrn buf. resizingResizeEventProc(irInBuf[i].Event.WindowBufferSizeEvent);break;case FOCUS_EVENT:  // disregard focus eventscase MENU_EVENT:   // disregard menu eventsbreak;default:ErrorExit("Unknown event type");break;}}}// Restore input mode on exit.SetConsoleMode(hStdin, fdwSaveOldMode);return 0;
}VOID ErrorExit(LPSTR lpszMessage)
{fprintf(stderr, "%s\n", lpszMessage);// Restore input mode on exit.SetConsoleMode(hStdin, fdwSaveOldMode);ExitProcess(0);
}VOID KeyEventProc(KEY_EVENT_RECORD ker)
{printf("Key event: ");if (ker.bKeyDown)printf("key pressed\n");else printf("key released\n");
}VOID MouseEventProc(MOUSE_EVENT_RECORD mer)
{#ifndef MOUSE_HWHEELED
#define MOUSE_HWHEELED 0x0008
#endifprintf("Mouse event: ");switch (mer.dwEventFlags){case 0:if (mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED){printf("left button press \n");}else if (mer.dwButtonState == RIGHTMOST_BUTTON_PRESSED){printf("right button press \n");}else{printf("button press\n");}break;case DOUBLE_CLICK:printf("double click\n");break;case MOUSE_HWHEELED:printf("horizontal mouse wheel\n");break;case MOUSE_MOVED:printf("mouse moved\n");break;case MOUSE_WHEELED:printf("vertical mouse wheel\n");break;default:printf("unknown\n");break;}
}VOID ResizeEventProc(WINDOW_BUFFER_SIZE_RECORD wbsr)
{printf("Resize event\n");printf("Console screen buffer is %d columns by %d rows.\n", wbsr.dwSize.X, wbsr.dwSize.Y);
}

注1:这是微软官方的代码,所以就是分享给大家的
积分多的也可以从这个链接下载链接: 控制台api大全

怎么在控制台下获取鼠标和键盘信息 即控制台下的键盘鼠标事件相关推荐

  1. cesium鼠标控制键盘_用 Python 控制 鼠标和键盘,花式操作

    可能有时候你需要在电脑做一些重复的点击或者提交表单等操作,如果能通过 Python 预先写好相关的操作指令,让它帮你操作,然后你自己爱干嘛干嘛去,有点 "按键精灵" 的意思,是不是 ...

  2. 交互系统的构建之(二)Linux下鼠标和键盘的模拟控制

    交互系统的构建之(二)Linux下鼠标和键盘的模拟控制 zouxy09@qq.com http://blog.csdn.net/zouxy09 交互系统的构建之(一)http://blog.csdn. ...

  3. mfc键盘控制移动鼠标光标_如何在Windows中使用键盘控制鼠标光标

    mfc键盘控制移动鼠标光标 If you're stuck without a mouse temporarily, don't worry-you can still use your PC. Yo ...

  4. win10 java模拟鼠标_[pc玩家]如何在Windows10中用键盘控制鼠标光标

    如果你的鼠标突然坏掉了,此时找不到替代鼠标,或者你使用的鼠标是电池供电的,此时电量耗尽,那么你可以将键盘配置为鼠标暂时缓解燃眉之急. 设置步骤 键盘鼠标控制功能内置于Windows10中.首先进入设置 ...

  5. sanf()、kbhit()、getch()获取键盘信息与peekMessage()获取鼠标信息

    C++语言获取键盘消息的几种方法 scanf()用户输入键盘信息 kbhit()与getch(),kbhit检测键盘是否按下,getch()获取键盘输入的信息 peekMessage()函数检测是否有 ...

  6. python pynput库 自动按键 鼠标键盘 监听控制插件 可以制作按键精灵

    这是一个跨平台,使用简单的鼠标键盘监听控制库. 安装 环境 mac os + python 3.6 pip install pynput 监听,控制 import time from pynput i ...

  7. STM32 HID鼠标、键盘、音乐控制设备 实战

    ID鼠标.键盘.音乐控制设备 B站主页 https://space.bilibili.com/371409064 HID鼠标键盘音乐控制-简介 https://www.bilibili.com/vid ...

  8. android hid 鼠标,使用BluetoothHidDevice将安卓手机同时模拟成鼠标和键盘

    一直以来就有一种想法,就是自己写一个APP将安卓手机模拟成鼠标/键盘,应急的时候可以用来代替鼠标/键盘.之前也在国内外的网站上找了各种方案,但是这些方案不是很好,直到谷歌发布的API28后终于有了很好 ...

  9. 压枪源码,移动鼠标源码,监听鼠标源码,控制鼠标移动源码,控制鼠标移动脚本

    压枪源码,移动鼠标源码,监听鼠标源码,控制鼠标移动源码,控制鼠标移动脚本 加了很多注释了,肯定能看懂,双开火键,左键正常,侧键直接压开 先ahk官网下载安装后就能直接运行这个ahk文件了 一开始尝试p ...

最新文章

  1. MySQL实验作业_MySQL作业
  2. HDLBits 系列(17) 计数器的级联实现1000分频的分频器
  3. C#中Math的使用总结
  4. 盘一盘2021全球流量最高的网站~
  5. MySQL中innodb_page_cleaners详解
  6. Go语言结构体的多字段赋值是并发安全的吗?
  7. 小米10至尊纪念版今日开卖:120hz高刷+120W秒充
  8. 【操作系统】对换、分页和分段方式-思维导图
  9. matplotlib在python3中的使用
  10. 【转】Servlet与web.xml的配置
  11. 直线方程求x坐标c语言,已知两点坐标,求直线方程、距离其中一点距离为L的某点...
  12. html5 画猫全过程svg入门
  13. C语言实现计算数的整数次幂
  14. 10019---初探JVM
  15. 把1,2,3,4,5,6,7,8,9九个数分成三组,各个数字使用一次
  16. 办公室面积增大,实现wifi覆盖的解决方案
  17. 淘宝与日本雅虎网购平台上线;Novell公司推出SUSE Meego系统(每日关注20100602)...
  18. windows phone7 mango 多人在线游戏
  19. 如何带领好新的员工?
  20. vbs 之 wscript

热门文章

  1. 《项目经理手记》读书笔记
  2. Git合并分支操作完整流程
  3. 【新闻】天洑软件参展第五届智能优化与调度学术会议
  4. 通过Debug带你详细了解Spring创建Bean的过程,一清二楚!
  5. 700个项目,1万亿投资!广东新基建方案出炉!(附10省新基建政策汇总)
  6. select @@session.tx_read_only
  7. 黑书《现代操作系统(中文第三版)》课后习题——第五章 输入/输出
  8. Android 模拟器屏幕定制(修改控制器大小)
  9. [附源码]计算机毕业设计springboot电影院网上售票系统
  10. 却说宋江因这一场大 水浒传