Запуск ярлыка под окнами
Следующая работа не работает, поскольку она не дожидается завершения процесса:
import subprocess p = subprocess.Popen('start /WAIT /B MOZILL~1.LNK', shell=True) p.wait()
Любая идея запуска ярлыка и ожидание возврата подпроцесса?
Edit: изначально я пробовал это без опции оболочки в своем сообщении, что вызвало потерю Popen. По сути, start
не является исполняемым, а командованием оболочки. Это было исправлено благодаря Джим.
- Взаимодействие с программой после выполнения
- Как я могу получить окно, ориентированное на Windows, и изменить его размер?
- Есть ли способ переместить окно на другой монитор с помощью Python?
- Получить положение и размер окна с помощью python
- печать на принтер Windows с помощью команды python или shell
Вам нужно будет вызвать оболочку, чтобы получить возможность использования подпроцесса:
p = subprocess.Popen('start /B MOZILL~1.LNK', shell=True) p.wait()
Однако это все равно выйдет немедленно (см. @R. Bemrose).
Если p.pid
содержит правильный pid (я не уверен в окнах), вы можете использовать os.waitpid()
для ожидания выхода программы. В противном случае вам может понадобиться использовать некоторую магию win32 com.
cmd.exe завершается, как только запуск запускает программу. Это поведение документировано (в начале /?):
Если активированы командные расширения, вызов внешней команды через командную строку или команду СТАРТ изменяется следующим образом:
…
При выполнении приложения, которое является 32-разрядным графическим приложением, CMD.EXE не дожидается завершения приложения перед возвратом в командную строку. Это новое поведение НЕ происходит, если выполняется в командном скрипте.
Как это влияет на флаг / wait, я не уверен.
Примечание. Я просто добавляю ответ Джима с небольшим трюком. Как насчет опции 'WAIT' для запуска?
p = subprocess.Popen('start /B MOZILL~1.LNK /WAIT', shell=True) p.wait()
Это должно сработать.
- Функция массива Numpy с if-statement
- Используйте Python для извлечения элементов ListView из другого приложения
- выполнить файл python глобально из любого пути – windows7
- Почему программа Python 2.7 AMD 64, похоже, запускает Python в 32-битном режиме?
- скрывать консоль при запуске в os.startfile ()?
- Python: запуск процессов Daemon в Windows7
- Изменение блокировки клавиатуры в Python
- Неправильный код выхода в python при вызове сценария Windows
- Как я могу гарантировать, что окна приложений всегда на высоте?
- pyHook + pythoncom перестает работать после нажатия слишком большого количества клавиш
- Как использовать espeak с python