如何以编程方式(在C/ c++中)模拟DOS中的击键

How do I emulate a keystroke in DOS programatically (in C/C++)?

本文关键字:模拟 DOS c++ 编程 方式      更新时间:2023-10-16

首先,我说的是DOS,而不是Windows的命令行应用程序。

我想写一个程序,它将发送一个击键到当前正在运行的进程。我的目标是在ISR(中断处理程序)中使用这个过程。

换句话说,这就是我想要发生的:

  • DOS启动。
  • 我运行一个TSR,它将我的过程注册为某些中断的ISR(不是键盘中断,但现在让我们假设它是)。
  • 我运行另一个程序,它成为当前运行的进程。
  • 上述中断发生。
  • 我的程序跳入并模拟击键,实际上,这从未真正发生过。
  • 当前运行的进程接收到这个击键,就像实际按下了模拟键一样。

我找到了一些有不同例子的资料,但我真的找不到任何适合我的。

我不知道它是否有任何相关性,但我现在用来测试所有这些的包括在VirtualBox机器上运行的FreeDOS,以及编译和运行代码的DJGPP(我相信它使用GNU编译器)。

非常感谢您的帮助。

你必须使用BIOS调用INT 16h, FUNC 05H…?或者直接写到0040:001E(或者是001C)…谷歌搜索出现了关于这个主题的几条线索…

http://www.rhinocerus.net/forum/lang-asm-x86/254441-re-how-write-char-keyboard-buffer.html