У меня есть скрипт с графическим интерфейсом, который берет пользовательские данные и сохраняет их в текстовый файл. Он запускает другой скрипт (.exe), который ожидает ввода пользователя, а затем выполняет некоторую работу. Я хочу, чтобы последний скрипт скрывал окно консоли после чтения ввода пользователя, но продолжал работать в фоновом режиме.
Я пытался запустить этот скрипт с subprocess.call('lastscript.exe', shell=True)
или subprocess.Popen('lastscript.exe', shell=True)
. Это не работает. Мне нужно сначала получить данные от пользователя, а затем скрыть консоль и позволить программе работать в фоновом режиме.
import ctypes;
kernel32 = ctypes.WinDLL('kernel32');
user32 = ctypes.WinDLL('user32');
user32.ShowWindow(kernel32.GetConsoleWindow(), 0)
. - person Eryk Sun   schedule 13.05.2016shell=True
при запуске lastscript.exe, и, вероятно, не следует его использовать. Используйте оболочку cmd.exe только для запуска команды, для которой требуются встроенные команды оболочки (например,copy
илиdir
) или WindowsShellExecuteEx
API. Вы можете запустить EXE-файл напрямую, без оболочки. Я удалил все ссылки на cmd в вашем вопросе, потому что окно консоли - это conhost.exe, а не cmd.exe. Если lastscript.exe является консольным приложением, то оно либо наследует, либо создает новый экземпляр conhost.exe для размещения своего окна консоли. - person Eryk Sun   schedule 13.05.2016