【问题标题】:Automating DOSbox application自动化 DOSbox 应用程序
【发布时间】:2018-12-18 11:27:41
【问题描述】:

我有一个非常旧的 DOS 应用程序,我想自动化它。就像有按键等,如果自动化将有很大帮助,因为我可能不得不手动运行程序超过一百次。

我的问题似乎与这个问题非常相似,但那里提供的解决方案对我来说不是很有用,而且它已经有九年多了

Automating old DOS application using Python

这个问题和我的问题之间唯一的大区别是除了 DOSbox 之外我别无选择。该应用程序安装在许多计算机上,所有使用该应用程序的人都知道如何使用 DOSBox。迁移到 Virtualbox 会很痛苦并且非常耗时。

我在想也许我可以在 python 中使用 xautomaton 或 uinput 以某种方式机械化它,但我无法确切地弄清楚如何。该应用程序将主要在 Ubuntu 上运行。

为了了解应用程序,我附上屏幕截图:

解决方案不一定需要在 python 中。任何其他语言都可以。任何帮助表示赞赏。

【问题讨论】:

  • 不是一个真正的答案,因此作为评论发布。根据托管 Dosbox 的操作系统,您应该尝试将击键发送到包含 dosbox 的窗口。对于 windows *.com/questions/2113950/… 可以给出提示。
  • 很抱歉我应该在问题本身中提到它。 DOSbox 在 Ubuntu 上运行。我将编辑问题
  • 那么你应该搜索如何将密钥发送到 X11 窗口。
  • 好的。我猜像 xdotool 之类的东西?一个正确的答案会有所帮助
  • 我评论只是有原因的。我可以为 WinAPI 提供帮助,也可以为 X11 提供帮助。希望您能找到其他回答者...

标签: python bash dos dosbox


【解决方案1】:

我想通了。虽然这不使用 python,但为了做到这一点,我只是捕获了 DOSbox 的 windowid 并使用xdotool 将所有按键发送到那里。这是一个例子:

wid=$(xdotool search --class DOSbox)
xdotool key --window $wid m t 5 Return Return i

这将输入“mt5”,然后按两次回车,然后输入“i”

一系列按键可以存储在字符串或文件中,并在每次必须运行时迭代调用。如果有更好的方法可以做到这一点,请随时回答。

【讨论】: