我在网上找到 了这段代码:
CHAR getch() {
DWORD mode, cc;
HANDLE h = GetStdHandle( STD_INPUT_HANDLE );
if (h == NULL) {
return 0; // console not found
}
GetConsoleMode( h, &mode );
SetConsoleMode( h, mode & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT) );
TCHAR c = 0;
ReadConsole( h, &c, 1, &cc, NULL );
SetConsoleMode( h, mode );
return c;
}
像这样使用它:
while(1) {
TCHAR key = getch();
}
我能够获得数字、字母甚至返回按键。但我无法获得转义或其他功能键,如控制、alt。是否可以对其进行修改以检测这些键?
原文由 user1806687 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果像控制和 alt 键这样的东西,这些是虚拟键击,它们是字符的补充。您将需要使用
ReadConsoleInput
。但你会得到一切,鼠标也一样。所以你真的需要过滤并从调用中返回一个结构,这样你就知道它是否是 ctrl-A Alt-A 之类的。如果您不想要它们,过滤器会重复。这可能需要工作,不知道你在追求什么……
ReadConsoleInput 函数
INPUT_RECORD 结构
KEY_EVENT_RECORD 结构
虚拟键码