Найти - Пользователи
Полная версия: Как управлять запущенным приложением
Начало » Python для экспертов » Как управлять запущенным приложением
1
Sunny
Как мне при повторном запуске приложения (запускаю с помощью os.spawnv) закрыть запущенное ранее. У меня по нажатию кнопки в главном приложении должно загружаться приложение(wordpad), а при повторном её нажатии запускаться оно же но с новыми параметрами.
setoy
Думаю, способ нет:( Мне тоже было нужно когда-то, не нашел
Viper
os.spawn возвращает ID процесса и по этой айдишке старый процесс можно убивать.
poltergeist
Есть способы:
- спомощью pywin32
- с помощью ctypes


import subprocess, ctypes, time

process = subprocess.Popen()

time.sleep(3)

ctypes.windll.kernel32.TerminateProcess(int(process._handle), -1)


или


import subprocess, ctypes, time

pid = subprocess.Popen().pid

time.sleep(3)

handle = ctypes.windll.kernel32.OpenProcess(1, False, pid)
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)


Можно ещё запускать утилиту taskkill или tskill - они доступны из командной строки, но это консольные приложение и не очень красиво, когда они вылетают по ходу работы гуевой программы.
pyuser
По поводу завершения процессов под Windows рекомендую посмотреть http://rsdn.ru/article/qna/baseserv/killproc.xml
setoy
Большое спасибо, poltergeist & pyuser! Вот последний линк очень интересный :)
os.spawn - я нигде не вижу, что возвращает PID. Если дейвствително возвращает - тогда ОК
Viper
Python Documentation
If mode is P_NOWAIT, this function returns the process ID of the new process
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB