2015-05-22 4 views
0

У меня есть скрипт python, запускающий программу .exe в Windows. Я хочу завершить эту программу, нажав «ESC». Но я не вижу нажатия клавиши в моей программе Python, она читается программой .exe и потребляется. Как запустить программу .exe, чтобы она не читалась с помощью stdin/keyboard. Мне не нужно отправлять какие-либо команды клавиатуры в программу .exe.Python предотвращает подпроцесс от потребления keypress

Это код, я использую:

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") 
+1

Поскольку .exe является активным приложением вы не собираетесь получить нажатия клавиш в программе. Ручка ESC в вашем .exe. –

ответ

0

Выглядит lite моя проблема была не подпроцессом, улавливающим нажатие клавиши. Но я занимаюсь чтением нажатия клавиши и анализом ключевого значения. Простите за беспокойство.

решение моей проблемы:

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

вместо:

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

Это НЕ возможно.

Родительский процесс (в этом случае Python) не имеет прямой контроля (кроме посылать сигналы и читать из стандартных вывода/STDERR и отправлять на стандартный ввод) над подпроцессом.

Вам необходимо обработать это в .EXE (Windows-исполняемый файл); при условии, что у вас есть исходный код, и может изменить его.

+0

Спасибо за ответ, швы моя проблема была не подпроцессом, а моей обработкой нажатия клавиши. – Aircleaner

Смежные вопросы