求助。编写win控制台程序时 怎么样监控按键输入阿 ?比如Esc,a,b,Ctrl+s

不会种地的老农 2004-12-26 10:33:17
如题 我是要写一个 记事本 像 dos下的 edit一样
如果是字母就显示 如果是系统键就 执行 相应的程序
应该用什么方法好?
...全文
356 点赞 收藏 24
写回复
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日
没有人知道么?
还是觉得太简单了?
帮帮忙嘛~
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告