我在网上发现了this piece of code:
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。是否可以修改它以检测这些键?
答案 0 :(得分:5)
如果像控制键和alt键这样的东西,它们是虚拟键击,它们是角色的补充。您需要使用<VirtualHost *:80>
ServerName myproject.local
DocumentRoot "d:/projects/myproject/www"
ErrorLog "d:/projects/myproject/www/apache_errors.log"
LogLevel trace8
<Directory "d:/projects/myproject/www/">
Options +Indexes +FollowSymLinks +Includes
AllowOverride All
Require all granted
LogLevel trace8
</Directory>
</VirtualHost>
。但你会得到它,鼠标也是。所以你真的需要从调用中过滤并返回一个结构,这样你才能知道它是否类似于ctrl-A Alt-A。如果您不想要它们,请重复过滤。
这可能需要工作,不知道你在追求什么......
ReadConsoleInput
答案 1 :(得分:-2)
你有很多方法可以获得键盘输入
你可以使用GetAsyncKeyState https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms646293(v=vs.85).aspx 或GetKeyState https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms646301.aspx
远比getch好