博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使控制台窗口支持鼠标的程序
阅读量:6833 次
发布时间:2019-06-26

本文共 2686 字,大约阅读时间需要 8 分钟。

//mouse.c - 主程序文件 #include 
#include
int main(int argc, char** argv){ DWORD dwMode, dwOldMode; /* 原来的模式与新模式 */ DWORD dwRead; /* 已经读取的输入事件数 */ int mouse_pos; /* 用于返回鼠标位置 */ UINT count; /* 用于循环控制 */ INPUT_RECORD ir[128]; /* 控制台输入记录 */ CONSOLE_CURSOR_INFO cci, cciOld; /* 鼠标相关的设置 */ COORD co; /* 鼠标移动时更新坐标 */ HANDLE hStdIn = NULL, hStdOut = NULL; /* 标准输入输出句柄 */ if(argc == 2 && argv[1][0] == '/' && argv[1][1] == '\?') { printf("控制台鼠标支持程序\n\n" "使用方法:\n" "\t/\?\t查看帮助\n\n" "返回值处理:\n" "\t%%ERRORLEVEL%% 高 16 位包含鼠标 X 坐标\n" "\t%%ERRORLEVEL%% 低 16 位包含鼠标 Y 坐标\n" "比如:返回 65537, 可以用如下方式取得 X,Y\n" "\tset /a ret=%%errorlevel%%\n" "\tset /a \"x=%%ret%%>>16\"\n" "\tset /a \"y=%%ret%%&65535\"\n\n" "女孩不哭,QQ:191035066 @ 批处理之家\n"); return 0; } hStdIn = GetStdHandle(STD_INPUT_HANDLE); /* 取得输入输出句柄 */ hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); if(!GetConsoleMode(hStdIn, &dwOldMode)) /* 取得控制台原来的模式 */ { fprintf(stderr, "GetConsoleMode 错误:%d\n", GetLastError()); goto _exit; } dwMode = dwOldMode | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT; if(!SetConsoleMode(hStdIn, dwMode)) /* 开启鼠标事件 */ { fprintf(stderr, "SetConsoleMode 错误:%d\n", GetLastError()); goto _exit; } GetConsoleCursorInfo(hStdOut, &cciOld); cci.bVisible = TRUE; /* 可见 */ cci.dwSize = 100; /* 块状 */ if(!SetConsoleCursorInfo(hStdOut, &cci)) { fprintf(stderr, "SetConsoleCursorInfo 错误:%d\n", GetLastError()); goto _exit; } for(;;) /* 循环等待用户事件 */ { if(!ReadConsoleInput(hStdIn, &ir[0], 128, &dwRead)) { fprintf(stderr, "ReadConsoleInput 错误:%d\n", GetLastError()); goto _exit; } for(count=0; count
<< 16 | ir[count].Event.MouseEvent.dwMousePosition.Y; return mouse_pos; } break; case MOUSE_MOVED: /* 更新鼠标位置 */ co.X = ir[count].Event.MouseEvent.dwMousePosition.X; co.Y = ir[count].Event.MouseEvent.dwMousePosition.Y; SetConsoleCursorPosition(hStdOut, co); break; } break; default: break; } } }_exit: return 1;}

示例脚本程序:

::test_mouse.bat - 脚本程序 @echo off:mainmouse.exeset /a "ret=%errorlevel%,x=ret>>16,y=ret&65535"title 鼠标演示程序, 鼠标坐标=(%x%,%y%)goto :main

源代码下载:

女孩不哭(QQ:191035066)@2012-06-08 23:32:53 @

发表于:

转载地址:http://ycnkl.baihongyu.com/

你可能感兴趣的文章
linux 安装mysql后修改密码出现问题
查看>>
mono和monodevelop源码编译安装
查看>>
FASTDFS 安装与开发
查看>>
ASP.NET MVC3 入门指南之数据验证[源码RAR下载]
查看>>
c++大法好,再也不用担心显示出科学计数法了
查看>>
【MySQL】批量数据循环插入
查看>>
简历模板
查看>>
java四大域总结
查看>>
jQuery 隐藏/显示
查看>>
.NET平台常用框架
查看>>
AOP、注解实现日志收集
查看>>
转: 向tabControl中添加一个Form(C#)
查看>>
CentOS 6.4 下用ntfs-3g挂载Windows NTFS分区
查看>>
[Android]实现客户端之间的即时通信
查看>>
终端设备与文件描述符及重定向
查看>>
中文词频统计
查看>>
P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)
查看>>
dirname
查看>>
MySQL crash-safe replication
查看>>
Permutations(排列问题,DFS回溯)
查看>>