我正在尝试编写一个Windows控制台应用程序(使用g ++编译的C ++),它将在循环中执行一系列指令,直到完成OR,直到按下ctrl-z(或其他一些按键)。我目前用来捕捉它的代码不起作用(否则我不会问,对吧?):
if(kbhit() && getc(stdin) == 26)
//The code to execute when ctrl-z is pressed
如果我按一个键,它会被回显,应用程序会等待,直到我按Enter继续。值为26时,它不执行预期的代码。如果我使用类似于65的值来捕获值,那么如果我按A然后按Enter键将重新路由执行。
有没有办法被动地检查输入,如果它不是我正在寻找的东西,或者当它正是我正在寻找的时候正确地做出反应? ..然后不必按Enter键?
答案 0 :(得分:3)
尝试ReadConsoleInput以避免熟化模式,并GetNumberOfConsoleInputEvents以避免阻止。
答案 1 :(得分:2)
如果G ++支持conio.h,那么你可以这样做:
#include <conio.h>
#include <stdio.h>
void main()
{
for (;;)
{
if (kbhit())
{
char c = getch();
if (c == 0) {
c = getch(); // get extended code
} else {
if (c == 'a') // handle normal codes
break;
}
}
}
}