[英]Python prevent subprocess from consuming keypress
我有一个在Windows中启动.exe程序的python脚本。 我希望能够通过按“ ESC”来终止该程序。 但是我在Python程序中看不到按键,它是由.exe程序读取并消耗的。 我如何启动.exe程序,以便不从stdin / keyboard读取。 我不需要将任何键盘命令发送到.exe程序。
这是我使用的代码:
pid = subprocess.Popen(functionCall)
while ((pid.poll()) or (pid.returncode == None)):
if msvcrt.kbhit() and msvcrt.getch()==chr(27):
print("ESC detected")
pid.kill()
pid.wait()
else:
print("Sleep")
time.sleep(1)
print("Exit while")
这是不可能的。
父进程( 在这种情况下为Python )没有对子进程的直接控制( 除了发送信号和从stdout / stderr读取并发送到stdin之外 )。
您将需要在.EXE
( Windows可执行文件 )本身中进行处理。 假设您拥有源代码并可以对其进行修改。
看起来很好,我的问题不是子进程遇到了按键问题。 但是我需要阅读按键并分析键值。 对不起打扰。
解决我的问题的方法:
msvcrt.getch().decode()==chr(27)
代替:
msvcrt.getch()==chr(27)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.