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

时间:2011-05-07 00:07:15

标签: c++ c dos keystroke emulation

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

我希望编写一个程序,将按键发送到当前正在运行的进程。 我的目标是在ISR(中断处理程序)中使用此过程。

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

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

我找到了几个不同的例子来源,但我真的无法为我工作。

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

非常感谢任何和所有的帮助。

1 个答案:

答案 0 :(得分:1)

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

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