我一直对TSR 程序的工作原理很感兴趣,所以我决定开始创建一个极其原始的程序。
这个 C 程序读取键盘击键并将它们打印在控制台屏幕上,除非您键入a
然后b
然后c
一个消息框会告诉您您键入abc
并退出q
也会导致程序退出。
一些笔记,该程序在任务管理器中占用了我至少 15% 的 CPU,为什么?我尝试将按键与27
ESC 中的按键进行比较,但没有成功。
#include <stdio.h>
#include <conio.h>
#include <Windows.h>
int main() {
char i;
while (1) {
if (kbhit()) {
i = getch();
if (i == 'q')
return 0;
if (i == 'a') {
i = getch();
if (i == 'b') {
i = getch();
if (i == 'c') {
int ans = MessageBox(NULL, "You typed abc\nPress OK to exit", "TSR confirmation", MB_ICONINFORMATION | MB_OK);
if (ans == 1)
return 0;
}
}
}
printf("You pressed %c\n", i);
}
}
return 0;
}
我的问题:控制台仍然显示,我试图将它编译为 Windows 程序,它自己加载到内存中,我在没有控制台的情况下丢失了它,不得不使用任务管理器来杀死它,有没有办法让它驻留在内存中并始终在没有控制台的情况下监视我的击键序列。
有没有更好的方法可以在没有嵌套 s 的情况下收听更长的字符序列,if
更长的序列会变得难看。