Автоматизация приложения DOSbox

У меня есть очень старое приложение DOS, которое я хотел бы автоматизировать. Например, есть нажатия клавиш и тому подобное, которые, если их автоматизировать, очень помогут, поскольку мне, возможно, придется запускать программу более сотни раз вручную.

Мой вопрос кажется очень похожим на этот, но предлагаемые там решения для меня не очень полезны, к тому же ему больше девяти лет.

Автоматизация старого приложения DOS с помощью Python

Единственная большая разница между этим и моим вопросом заключается в том, что у меня нет другого выхода, кроме DOSbox, для этого. Это приложение установлено на множестве компьютеров, и все люди, использующие его, знают, как использовать DOSBox. Переход на Virtualbox будет болезненным и займет очень много времени.

Я думал, может, я смогу как-то механизировать это на python, используя xautomaton или uinput, но я не мог точно понять, как это сделать. Приложение будет работать в первую очередь на Ubuntu.

Чтобы дать представление о приложении, прилагаю скриншот:

Автоматизация приложения DOSbox

Решение не обязательно должно быть на Python. Подойдет любой другой язык. Любая помощь приветствуется.

Неправильный ответ, поэтому опубликован как комментарий. В зависимости от ОС, в которой установлен Dosbox, вам следует попытаться отправить нажатия клавиш в окна, содержащие dosbox. Для окон stackoverflow.com/questions/2113950/… может давать подсказки.

Serge Ballesta 18.12.2018 14:02

Мне очень жаль, что я упомянул об этом в самом вопросе. DOSbox работает на Ubuntu. Я отредактирую вопрос

Yuki.kuroshita 18.12.2018 14:38

Затем вам следует поискать, как отправлять ключи в окна X11.

Serge Ballesta 18.12.2018 14:40

Хорошо. Что-то вроде xdotool, наверное? Хотя правильный ответ поможет

Yuki.kuroshita 18.12.2018 14:44

Я прокомментировал не просто так. Я мог бы помочь ни для WinAPI, ни для X11. Надеюсь, вы найдете других ответчиков ...

Serge Ballesta 18.12.2018 14:46

Конечно, все равно спасибо. Я сам напишу ответ если разберусь

Yuki.kuroshita 18.12.2018 14:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
361
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я понял это. Хотя здесь не используется python, для этого я просто захватил идентификатор окна DOSbox и отправил туда все нажатия клавиш с помощью xdotool. Вот пример:

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

Будет набрано «mt5», затем дважды нажмите «Ввод», а затем введите «i».

Последовательность нажатий клавиш может быть сохранена в строке или файле и вызываться итеративно каждый раз, когда она должна выполняться. Если есть лучший способ сделать это, пожалуйста, ответьте.

Другие вопросы по теме