社区
C++ 语言
帖子详情
求助。编写win控制台程序时 怎么样监控按键输入阿 ?比如Esc,a,b,Ctrl+s
不会种地的老农
2004-12-26 10:33:17
如题 我是要写一个 记事本 像 dos下的 edit一样
如果是字母就显示 如果是系统键就 执行 相应的程序
应该用什么方法好?
...全文
495
24
打赏
收藏
求助。编写win控制台程序时 怎么样监控按键输入阿 ?比如Esc,a,b,Ctrl+s
如题 我是要写一个 记事本 像 dos下的 edit一样 如果是字母就显示 如果是系统键就 执行 相应的程序 应该用什么方法好?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
madmanahong
2004-12-30
打赏
举报
回复
控制台应用ye是PE格式的。
可以直接使用windows api。除了gdi32.dll里面的接口!
fflush
2004-12-30
打赏
举报
回复
32位的程序你不是可以直接处理消息了吗,那样你可以很方便的处理按键输入啊
32位的程序内嵌汇编还没用过,不能提供实质性的意见:)
不会种地的老农
2004-12-30
打赏
举报
回复
试了一下 _getch()确实 可以哈
那就暂时用这个了
直接嵌入汇编 32位程序好办么?
我在写界面的时候 想直接用汇编 就过不行阿 还是用了API
不会种地的老农
2004-12-30
打赏
举报
回复
哦 了解 谢谢各位拉
QD_IceWolf
2004-12-30
打赏
举报
回复
GetConsoleWindow可以得到控制台的窗口句柄。
若只是想控制CTRL+C,可以看SetConsoleCtrlHandler 的帮助。
不会种地的老农
2004-12-30
打赏
举报
回复
我这个是 win32 console 程序阿
getmessage 好像不能用阿???
不起作用
不会种地的老农
2004-12-29
打赏
举报
回复
楼上上上的 说用 WM_KEYDOWN
GetMessage 好像不能再 console程序下 使用阿?
fflush
2004-12-29
打赏
举报
回复
他说的控制台程序的窗口句柄说的是windows中那个console窗口,所以有个句柄
中断应该可以用的,windows的控制台就是模拟了以前的dos环境,如果你在控制台下要监控所有的键盘输入,我觉得与其用键盘钩子,还不如内嵌汇编直接用中断来获取来的简单
另外,我给你提供的那个_getch()的程序是可以检测到ctrl+c的,虽然msdn上说不行,不过我验证过了,这些键会返回特定的ascii码
不会种地的老农
2004-12-29
打赏
举报
回复
控制台程序 有窗口句柄么?
好像句柄是NULL ,GetMessage会得到本线程所有的消息阿
可是在 控制台下不行阿~
中断win32不行吧?
我也想过用 HOOK ,但是这个不太清楚阿
sethook ,能不能 只截取 到程序的 消息呢?
我不想影响其他的程序阿? 怎么过滤?
有人能讲讲细节么?
独孤过儿
2004-12-29
打赏
举报
回复
的确是个困难的问题!
我知道这个函数 cin.get()可以读入回车和别的字符,但是没办法处理ESC和空格键。我已经调试过
了。如果实在没有办法,就只能用中断的方法了。
healer_kx
2004-12-29
打赏
举报
回复
GetMessage要窗口句柄的, 你的控制台也是窗口啊. 也有的:)
要是这个不行, 你就HOOK吧.
不会种地的老农
2004-12-28
打赏
举报
回复
_getch()好像不能处理 ctrl+c 这种 按键吧?
sonic_andy
2004-12-28
打赏
举报
回复
_getch()应该可以
fflush
2004-12-28
打赏
举报
回复
int main ()
{
int i;
while (1)
{
if ((i = _getch ()) == 0 || i == 0xE0)//是控制键
{
cout << _getch () << endl;//得到控制键的asc码
}
else
{
cout << i << endl;//得到一般字符的asc码
}
}
}
ishumin
2004-12-28
打赏
举报
回复
处理WM_KEYDOWN消息,具体查看msdn关于WM_KEYDOWN的论述。
不会种地的老农
2004-12-28
打赏
举报
回复
我用的是 vc6
bioskey() 是tc里的把?
有没有其他什么方法阿?
fflush
2004-12-28
打赏
举报
回复
使用bioskey ()这个函数,可以完成你所需要的功能,具体怎么用我没有现成的代码,你可以到网上搜一下
beyondtkl
2004-12-28
打赏
举报
回复
应该是不行的。。
glimix
2004-12-28
打赏
举报
回复
你可以查看这些键的定义,然后做出switch...case...判断,或者用bioskey(),好像是这个函数。
不会种地的老农
2004-12-27
打赏
举报
回复
没有人知道么?
还是觉得太简单了?
帮帮忙嘛~
加载更多回复(4)
Python电商价格
监控
实战:零基础搭建可运行的自动化工具
本文详解如何用Python零基础搭建可运行的电商价格
监控
系统,涵盖requests网络请求、BeautifulSoup HTML解析、SQLite轻量存储及SMTP邮件通知等核心技术。重点讲解反爬应对、HTML结构变化容错、数据库设计哲学与日志驱动调试方法,所有代码可在Python 3.8+本地环境直接运行,无需API密钥或复杂配置。
OpenClaw
Win
dows后台服务化部署全指南
本文详解如何将OpenClaw正确部署为
Win
dows系统服务,规避Session 0隔离、交互式服务禁用和
控制台
生命周期绑定三大陷阱;核心采用NSSM服务包装器完成注册、配置与验证,并覆盖自动更新、技能热重载、内存
监控
等进阶运维实践,提供7类高频故障的根因定位链,确保OpenClaw在生产环境稳定、静默、自启运行。
OpenCLAW本地化部署指南:让非技术人员5分钟用上72B大模型
本文详解OpenCLAW——面向非技术人员的大模型调度中枢——在
Win
dows原生环境下的本地化部署全流程。涵盖Python 3.11.9+venv环境搭建、DirectML/CUDA加速配置、K-Quant量化模型加载、WebUI三栏式智能工作台使用,以及API集成(兼容OpenAI规范)、Redis可视化
监控
、Excel VBA调用等生产就绪实践。强调绕过Docker/WSL2,直击GPU直连与零侵入式能力注入。
Gemma 4本地部署实战指南:旧电脑离线跑通128K上下文多模态小模型
本文详解Gemma-4-E4B在旧硬件(如i3+16GB内存)上的离线本地部署全流程,涵盖GGUF量化模型选择(Q4_K_S)、llama.cpp b8705版本适配、
Win
dows防火墙配置、API服务启动参数调优,以及Perplexica集成与混合工作流设计。重点突出128K上下文动态窗口、原生system role支持、可中断推理链及设备原生多模态能力,所有步骤均经真实环境17天验证。
Dev-C++ 5.11:零基础C/C++入门最平滑的IDE选择
本文系统阐述Dev-C++ 5.11作为C/C++入门IDE的核心价值,聚焦其轻量性、确定性与教学友好性。重点解析官方安装包验证方法、三大安装陷阱(中文路径、杀软拦截、注册表污染)及对应绕过方案;深入拆解中文乱码的四大根源(源文件编码、编译器参数、
控制台
代码页、字体渲染),提供可复现的四步修复法;并涵盖首次编译验证流程、五个高实用性插件配置及编译器版本一键切换技巧,强调5.11在稳定性、
输入
法兼容性与调试可靠性上相较新版的不可替代性。
C++ 语言
65,210
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章