Python 防止子进程使用按键
Python prevent subprocess from consuming keypress
我有一个 python 脚本在 Windows 中启动一个 .exe 程序。我希望能够通过按 "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)
我有一个 python 脚本在 Windows 中启动一个 .exe 程序。我希望能够通过按 "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)