gpt4 book ai didi

c++ - 如何从 C++ 程序修改键盘中断(在 Windows XP 下)?

转载 作者:行者123 更新时间:2023-11-30 03:10:53 25 4
gpt4 key购买 nike

  • 我们得到了一个小项目(作为我的操作系统类(class)的一部分)来制作一个修改键盘输入的 Windows 程序,以便它将输入的任何小写字符转换为大写字符(不使用大写锁定) !因此,当您在键盘上键入时,您会看到您正在键入的内容已转换为大写字母!

    • 我通过调用 geninterrupt() 并使用变量 _AH、_AL 使用 Turbo C 很容易地完成了这项工作,我必须使用以下方法读取一个字符:

      _AH = 0x07;//读取一个没有回显的字符中断(0x21);//Dos 中断

    • 然后要将其转换为大写字母,我必须使用以下方法屏蔽第 5 位:

      _AL = _AL & 0xDF;//用 11011111 屏蔽输入的字符

    • 然后我将使用任何输出例程显示字符。

现在,这个解决方案只能在旧的 C DOS 编译器下工作。但我们打算做的是通过在 Windows XP 下使用任何现代 C/C++ 编译器来对此做出接近或类似的解决方案!我首先想到的是修改键盘 ISR,使其屏蔽任何输入字符的第五位以将其变为大写!但我不知道该怎么做。其次,我想创建一个 Win32 控制台程序来执行相同的解决方案(但到 no avail)或制作一个与 Windows 兼容的解决方案,但我仍然不知道要使用哪些功能!第三,我想制作一个直接修改 ISR 以满足我需要的 Windows 程序!我还在寻找如何做到这一点!

所以,如果你能帮我解决这个问题,我将不胜感激!

提前致谢!

(我在带有 mingw-GCC 编译器的 intel X86 上使用 Windows XP。)

最佳答案

除非您编写 Ring 0 设备驱动程序,否则您无法访问键盘 ISR。您最好调查一下 Windows Hook API。它们完成同样的事情。

从这里开始:http://msdn.microsoft.com/en-us/library/ms644990%28v=VS.85%29.aspx

关于c++ - 如何从 C++ 程序修改键盘中断(在 Windows XP 下)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2813970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com