我一直对如何TSR programs worked很感兴趣,所以我决定开始创建一个非常原始的。
这个 C 程序读取键盘击键并将它们打印在控制台屏幕上,除非您输入 a
然后 b
然后 c
然后一个消息框会告诉您您输入了 abc
并退出 q
也会导致程序退出。
请注意,程序在任务管理器中占用了至少 15% 的 CPU,为什么?
我尝试将击键与 ESC 中的 27
进行比较,但没有奏效。
#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 程序,它自己加载到内存中,但我在没有控制台的情况下丢失了它,不得不使用任务管理器来杀死它,有没有办法让它驻留在内存中并始终监视我在没有控制台的情况下为序列击键。
有没有更好的方法可以在没有嵌套 if
的情况下收听更长的字符序列,更长的序列会变得丑陋。