【发布时间】:2011-05-07 00:07:15
【问题描述】:
首先,我说的是 DOS,而不是 Windows 的命令行应用程序。
我希望编写一个向当前正在运行的进程发送击键的程序。 我的目标是在 ISR(中断处理程序)中使用此过程。
换句话说,这就是我想要发生的事情:
- DOS 启动。
- 我运行一个 TSR,它将我的过程注册为某个中断的 ISR(不是键盘中断,但现在让我们假设它是)。
- 我运行另一个程序,它成为当前正在运行的进程。
- 发生上述中断。
- 我的程序跳入并模拟击键,事实上,这从未真正发生过。
- 当前正在运行的进程收到此击键,就好像实际按下了模拟键一样。
我找到了几个来源不同的例子,但我真的找不到任何适合我的东西。
我不知道它是否有任何相关性,但我目前用来测试所有这些的包括在 VirtualBox 机器上运行的 FreeDOS,以及用于编译和运行代码的 DJGPP(它使用 GNU 编译器,我相信)。
我们将不胜感激。
【问题讨论】:
-
我很长时间没有使用 DOS,但您可能会在 Ralf Browns 中断列表 (ctyme.com/rbrown.htm) 中找到答案的核心。 Ray Duncans “高级 MS-DOS 编程”也是一个显而易见的建议,但如果你有一份副本,你可能已经检查过了。
-
寻找密切的原因“问得太晚了二十年”...
-
仔细想想,任何方法都不可靠可能是有原因的。某些 DOS 软件可能会绕过 O/S 调用,并以顽皮的方式访问键盘接口,因此通过 DOS 和/或 BIOS 中断发送假键可能不起作用。
-
确实,这个问题没有答案,除非你愿意虚拟化整台机器(考虑到 DOS 的任何东西都只期望 ~33 MHz,无论如何,这可能是可行的......)跨度>
-
这个问题的解决方案到底有什么应用?
标签: c++ c dos keystroke emulation