我们已经给了一个小项目(作为我的操作系统课程的一部分)来制作修改键盘输入的Windows程序,以便将任何小写字母转换成大写字母(不使用大写锁定)!所以当你在键盘上输入时,你会看到你正在输入的内容被转换成大写字母!如何从C++程序修改键盘中断(在Windows XP下)?
我已经通过调用geninterrupt()和使用变量_ah,_AL这样做很容易使用的Turbo C,我不得不使用读取一个字符:
_ah = 0×07; //读一个没有回声的字符 geninterrupt(0x21); // DOS中断
然后将它转变成一个大写在前字母i必须通过使用以掩盖第五位:
_AL = _AL & 0xDF; //屏蔽输入的字符11011111
然后我将使用任何输出例程显示字符。现在
,该解决方案将仅在旧的C编译器DOS下工作。但是我们打算做的是通过在Windows XP下使用任何现代C/C++编译器来制作一个近似或类似的解决方案!我首先想到的是修改键盘ISR,以便屏蔽任何输入字符的第五位以将其变成大写!但我不知道如何做到这一点。其次,我想创建一个Win32控制台程序,以执行相同的解决方案(但可以使用no avail)或制作Windows兼容的解决方案,但我不知道要使用哪些功能! 第三我认为做一个Windows程序,直接修改ISR以满足我的需求!我仍然在寻找如何做到这一点!
所以请,如果你能帮我解决这个问题,我将不胜感激!
预先感谢您!
(我使用Windows XP的英特尔X86使用MinGW-GCC编译器。)
为什么人们仍然在使用Turbo C?它比Borland C++早,而且是一个旧的编译器! – 2010-05-11 20:15:30
仅限于教育原因,先生:) – Rockr90 2010-05-11 20:22:33
哎呀,我还是很惊讶,你知道任何有关DOS编程。 – jmucchiello 2010-05-12 17:59:04