如何将输入发送到Python3子进程打开的窗口?

时间:2017-03-12 20:44:40

标签: python python-3.x subprocess user-input dosbox

我正在使用Python3来运行MS-DOS模拟器(dosbox)。我的想法是在Raspberry Pi中设置它并拥有自己的街机,但我会使用python制作一个体面的GUI,以便能够选择要播放的游戏并自动启动。

但是,dosbox在新窗口中启动程序,我需要控制该窗口的输入和输出。这是为了标准化键绑定(让所有游戏使用相同的键集)并为某些游戏设置一些自动按键以自动启动。

import os
import pygame
import subprocess
import time

cwd = os.getcwd()
cmd = ['dosbox', cwd+'/Hi-Octane/HiOctane/EXECUTOR.EXE']
p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE,
                           stdin=subprocess.PIPE)
time.sleep(2)
out, err = p.communicate('1'.encode('utf-8'))
print(out)

在上面的代码中,我尝试向窗口发送一个'1'(如有人按下1键)(这是游戏需要按下以开始运行的内容)。

TL; DR:如何模拟按键或鼠标按键并将输入发送到子进程打开的窗口中?

0 个答案:

没有答案