社区
C++ 语言
帖子详情
求助。编写win控制台程序时 怎么样监控按键输入阿 ?比如Esc,a,b,Ctrl+s
不会种地的老农
2004-12-26 10:33:17
如题 我是要写一个 记事本 像 dos下的 edit一样
如果是字母就显示 如果是系统键就 执行 相应的程序
应该用什么方法好?
...全文
431
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
打赏
举报
回复
应该是不行的。。
我的女神
2004-12-28
打赏
举报
回复
你可以查看这些键的定义,然后做出switch...case...判断,或者用bioskey(),好像是这个函数。
不会种地的老农
2004-12-27
打赏
举报
回复
没有人知道么?
还是觉得太简单了?
帮帮忙嘛~
加载更多回复(4)
零基础快速入门:Linux系统 系统的安装、局域网与外网 的配置、下载服务的多种方式
1.linux系统介绍 以
win
dows为内核的操作系统有哪些:
win
10
win
8
win
7 xp 系统
win
dows server 以linux为内核的操作系统有哪些:centos ubuntu debian...
第二章:
WIN
DOWS的一些技巧
在保存网页前,可以按一下"
ESC
"键(或脱机工作)再保存,这样保存很快 3.用电脑听CD可以不用任何的播放软件,把音箱线直接接到光驱的耳机孔,放入 CD,按光驱上的play键就可以直接听了,这样听歌可以不占用系统资源。...
【上古秘籍】之Eclipse的秘籍 转
【
Ctrl
+M】 窗口最大化和还原,用户在窗口中进行操作
时
,总会觉得当前窗口小(尤其在
编写
代码
时
),现在好了,试试【
Ctrl
+M】快捷键。 查看和定位快捷键 在
程序
中,迅速定位代码的位置,快速找到Bug的所在,是非常...
注册表知识与技巧大全
注册表基础: ...AppData C:\
Win
dows\Application Data 应用
程序
Cache C:\
Win
dows\Temporary Internet Files 浏览器缓存 Cookies C:\
Win
dows\Cookies Desktop Desktop 桌面 Favorites Favor
vue2+vue3
如果使用 idea / webstorm 等其他开发工具,则有集成各种文件格式的模板,无需额外
编写
路径配置 点击 文件 → 首选项 → 配置用户代码片段 →
输入
html,打开 html.json(或者滚轮滚到底端找也可以)
输入
vue,...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章