繁体   English   中英

Python防止子进程消耗按键

[英]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之外 )。

您将需要在.EXEWindows可执行文件 )本身中进行处理。 假设您拥有源代码并可以对其进行修改。

看起来很好,我的问题不是子进程遇到了按键问题。 但是我需要阅读按键并分析键值。 对不起打扰。

解决我的问题的方法:

 msvcrt.getch().decode()==chr(27)

代替:

msvcrt.getch()==chr(27)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM