【发布时间】:2017-07-13 15:46:08
【问题描述】:
我试图在按下 ESC 键时停止我的程序。
例如我有这样的代码:
char key;
char msg[20];
printf("\n\n\t\t press escape to quit\n\n");
do {
key = _getch();
if (key == ESC) {
printf("Key: ESCAPE");
putchar('\n');
}
else {
printf("Key: %c", key);
putchar('\n');
}
Sleep(5000);
} while (key != ESC);
return 0;
现在,当我需要在按下 ESC 时立即退出程序时 有可能吗? 我的程序将在 5 秒后退出..
Sleep(5000)
我只想在按下 ESC 时立即退出程序。
我该怎么做?
【问题讨论】:
-
你有没有尝试在按下 ESC 时在分支中打断?
-
你的意思是在分支中放break你能举个例子吗?是另一种停止整个程序并忽略此睡眠功能的方法吗?我想我需要创建一个热键。在 autoit 中,它真的很简单,只是创建一个热键,当我按下 ESC - 主程序停止主循环并在我的热键中执行指令时。我怎么能在 c++ 中做到这一点,有什么想法吗?
-
添加 Sleep() 调用是一个错误。您认为您需要这样才能看到 printf() 语句的输出。你没有,按 Ctrl+F5 来查看。您可以通过使用 GetConsoleProcessList() 来检测您是否需要“按任意键继续”样式交互来使其完美,因为当您的程序结束时控制台窗口将消失。
-
@UP 你是对的人,但你的回答对我没有帮助。是否可以在主循环之外创建热键功能,这将一直等待按键并执行指令?
-
if (key == ESC) { printf("Key: ESCAPE"); putchar('\n');休息;