在DOS程序中如何通过编程模拟按键(使用C/C++)?

3
首先,我要谈论的是DOS,而不是Windows的命令行应用程序。
我希望编写一个过程,可以向当前运行的进程发送按键。我的目标是在ISR(中断处理程序)中使用此过程。
换句话说,这就是我想要发生的事情:
DOS启动。 我运行一个TSR,该TSR将我的过程注册为某个中断的ISR(不是键盘中断,但现在让我们假设它是)。 我运行另一个程序,它成为当前正在运行的进程。 上述中断发生。 我的过程跳入并模拟按键,实际上从未发生过。 当前正在运行的进程接收到此按键,就好像实际按下了模拟的键。
我找到了几个具有不同示例的来源,但我无法真正使任何内容对我起作用。
我不知道它是否相关,但我目前用于测试所有这些的内容包括在VirtualBox机器上运行的FreeDOS,并且使用DJGPP编译和运行代码(我相信它使用GNU编译器)。
非常感谢您提供的任何帮助。

我已经很久没有使用DOS了,但你可能会在Ralf Brown的中断列表(http://www.ctyme.com/rbrown.htm)中找到答案的核心。Ray Duncan的《高级MS-DOS编程》也是一个明显的建议,但如果你有一本副本,你可能已经检查过了。 - user180247
4
查找关闭原因为“问得太晚了二十年”的记录。 - Hans Passant
想一想,任何方法都可能不可靠,这可能有原因。一些DOS软件可能会绕过操作系统调用,以淘气的方式访问键盘接口,因此通过DOS和/或BIOS中断发送虚假按键可能没有效果。 - user180247
实际上,如果你愿意将整个机器虚拟化(考虑到只有DOS的应用程序最多也只需要33 MHz),这个问题就没有答案了... - R.. GitHub STOP HELPING ICE
这个问题的解决方案有什么应用? - Cody Gray
1个回答

1

好的,我会尝试一下。可能需要一些时间。谢谢。 - Kyre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接