C++ 实现鼠标点击控制台输出字符串执行函数
要实现点击控制台输出的特定字符串执行某个函数,需要使用鼠标事件来监测鼠标点击操作,并利用字符串比较来判断是否点击了特定字符串。以下是一个简单的 C++ 示例代码:
#include <iostream>
#include <Windows.h>
void a() {
std::cout << "执行了函数 a" << std::endl;
}
void detectMouseClick() {
INPUT_RECORD inputRecord;
DWORD numEventsRead;
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
SetConsoleMode(hStdin, ENABLE_EXTENDED_FLAGS | ENABLE_MOUSE_INPUT);
while (true) {
ReadConsoleInput(hStdin, &inputRecord, 1, &numEventsRead);
if (inputRecord.EventType == MOUSE_EVENT) {
if (inputRecord.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) {
COORD clickPos = inputRecord.Event.MouseEvent.dwMousePosition;
// 获取控制台输出的特定字符串
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
CHAR_INFO charInfo;
COORD charPos = { clickPos.X, clickPos.Y };
ReadConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), &charInfo, 1, charPos, &csbi.srWindow);
if (charInfo.Char.UnicodeChar == '1' && clickPos.X < csbi.dwSize.X - 1) {
// 如果点击了特定字符串,则执行函数 a
charInfo.Char.UnicodeChar = '1';
WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE), &charInfo, 1, charPos, &csbi.srWindow);
a();
}
}
}
}
}
int main() {
std::cout << "114514" << std::endl;
detectMouseClick();
return 0;
}
在上述示例代码中,detectMouseClick() 函数通过循环不断读取鼠标事件,当检测到鼠标左键点击时,获取鼠标点击的位置和点击位置的字符信息。然后,与特定字符串进行比较,如果相同,则执行函数 a() 并输出相应的信息。
请注意,在 Windows 下,需要使用 Windows.h 头文件中的相关函数来处理鼠标事件。此外,要使用鼠标事件,需要将控制台输入模式设置为 ENABLE_MOUSE_INPUT。
原文地址: https://www.cveoy.top/t/topic/qfkD 著作权归作者所有。请勿转载和采集!