Как убить процесс игры
Здравствуйте всем.
После небольшого перерыва, вернулся к изучению python.
Необходимо по нажатию клавиши alt закрыть процесс gta-vc, через cmd консоль, но не получается написать в консоли следующую команду «taskkill /f /im gta-vc.exe»
Пожалуйста, подскажите как убить процесс игры?
Пытаюсь реализовать следующем образом.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
import os, time, keyboard from pynput import * def on_release(key): if key == keyboard.Key.alt_l: os.startfile(r'cmd.exe') a = str("taskkill /f /im gta-vc.exe") time.sleep(10) keyboard.write(str(a),delay=10) keyboard.send('enter') # aliases: press_and_release time.sleep(1) return False # Collect events until released while 1: with keyboard.Listener(on_release=on_release) as listener: listener.join()
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как убить процесс?
Подскажите как убить процесс? Желательно любой (вплоть до win.com) Заранее спасиба за ответ
Как убить процесс?
Как убить процесс (скайпа) на C#?
Как убить процесс?
Как убить процесс с помощью программы(консольного приложения)?
Как убить процесс?
Посмотрел на форумах и/к на убивание процесса, у всех делается через код т.е. Process proc =.
Как убить изменённый процесс?
Допустим если имя процесса (файла) изменили, то по обычному имени не убить его, как убить.
307 / 188 / 97
Регистрация: 01.05.2014
Сообщений: 519
Сообщение было отмечено Егор Щербанов как решение
Решение
1 2 3 4 5 6 7 8 9 10
import os import keyboard while True: try: if keyboard.is_pressed('Alt'): os.system("taskkill /f /im TOTALCMD64.exe") break except: break
Subprocess — завершить процесс. python 3
В одной папке с программой лежит server.exe (приложение которое работает бесконечно долго). Например:
1 2 3 4
from time import sleep while True: sleep(2) print('. ')
Я хочу запустить его на 10 секунд и для этого пишу следующее:
1 2 3 4 5 6
import subprocess from time import sleep program = "server.exe" process = subprocess.Popen(program) sleep(10) process.terminate() #или я пишу: process.kill()
Эта программа говорит, что завершается успешно, но server.exe не завершился и продолжает работать.
Как решить проблему?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Subprocess python 3
Я писал программу одну с использованием модуля subprocess Запускал консольный процесс с помощью.
Python subprocess
Добрый день есть такая проблема не работает следующий код. import subprocess as sub process = sub.
Завершить процесс
Всем привет, я тут недавно и хотел бы узнать — как создать батник который завершал бы определенную.
Завершить процесс
Всем привет! Пользуюсь программой process explorer. Довольно-таки часто приходится завершать.
Завершить процесс
Как завершить процессор(которые обычно отображаются в диспетчере задач) например надо завершить.
111 / 96 / 35
Регистрация: 03.02.2009
Сообщений: 282
Сообщение было отмечено python_novichok как решение
Решение
Попробуй сделать следующее:
1 2 3 4 5 6 7 8 9 10
import os from time import sleep program = "server.exe" os.system('start /d"C:\\Path\\To\\File\\" '+program) sleep(10) os.system("TASKKILL /F /IM "+program) # Если не получится, попробуй прописать полный путь до TASKKILL.exe # (проверить, может отличаться от моего) #os.system("C:\\Windows\\System32\\TASKKILL.exe /F /IM "+program)
Убить процесс в python
Здравствуйте, уважаемые форумчане. Просьба помочь. Имеются две кнопки. По нажатию на первую срабатывает функция запуска процеcса:
def on_task_open(): global proc import subprocess from subprocess import Popen, PIPE proc = subprocess.Popen("konsole -workdir " + full_dir + " -e bash /*/*/OpenFOAM/QW", shell=True)
Работает нормально. Теперь нужно, чтобы после нажатия другой кнопки процесс завершался и консоль закрывалась. Но не работает(((
def on_task_close(): proc.kill()
cdi1989
21.09.15 14:19:13 MSK
В твоей предыдущей теме:
shrub ★★★★★
( 21.09.15 14:22:02 MSK )
Ответ на: комментарий от shrub 21.09.15 14:22:02 MSK
Если бы я понял, как это сделать, то не спрашивал бы
cdi1989
( 21.09.15 14:23:28 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 14:23:28 MSK
alozovskoy ★★★★★
( 21.09.15 14:26:49 MSK )
Ответ на: комментарий от alozovskoy 21.09.15 14:26:49 MSK
не работает. в случае процесс даже не запускается
cdi1989
( 21.09.15 14:30:10 MSK ) автор топика
УМВР, давай весь код.
deadNightTiger ★★★★★
( 21.09.15 14:36:15 MSK )
Ответ на: комментарий от deadNightTiger 21.09.15 14:36:15 MSK
В первом сообщении и есть основной код. Первая ф-ция работает норм, т.е. консоль открывается и процесс запускается. а вторая не работает
cdi1989
( 21.09.15 14:41:48 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 14:41:48 MSK
В первом сообщении и есть основной код.
Почитай про пространства имён. Судя по всему, ты пытаешься грохнуть несуществующий процесс. Поэтому у тебя и «не работает».
Потому что proc из первой функции и proc из второй — это две разных переменных?
shrub ★★★★★
( 21.09.15 14:43:58 MSK )
Последнее исправление: shrub 21.09.15 14:45:27 MSK (всего исправлений: 1)
Ответ на: комментарий от cdi1989 21.09.15 14:30:10 MSK
В смысле если в on_task_close заменить proc.kill() на proc.terminate() то процесс не запускается? Он ведь у тебя в другой функции запускается.
MrClon ★★★★★
( 21.09.15 14:45:11 MSK )
Ответ на: комментарий от MrClon 21.09.15 14:45:11 MSK
и с тем и другим не запускается
cdi1989
( 21.09.15 14:47:49 MSK ) автор топика
Ответ на: комментарий от shrub 21.09.15 14:43:58 MSK
Так а если глобальной ее сделать??
cdi1989
( 21.09.15 14:48:40 MSK ) автор топика
P.S. импорты полагается делать в начале файла, а не в теле функции. И зачем делать «from subprocess import Popen, PIPE» если до этого уже сделал «import subprocess»?
MrClon ★★★★★
( 21.09.15 14:49:25 MSK )
Ответ на: комментарий от cdi1989 21.09.15 14:47:49 MSK
Так всё-таки «Первая ф-ция работает норм, т.е. консоль открывается и процесс запускается. а вторая не работает» или «и с тем и другим не запускается»?
MrClon ★★★★★
( 21.09.15 14:51:10 MSK )
Ответ на: комментарий от cdi1989 21.09.15 14:48:40 MSK
Ну вот ты сделал её глобальной в первой функции, и при этом пытаешься во второй работать с локальной как с глобальной. Ну и что тебе это дало, кроме неработающего кода?
shrub ★★★★★
( 21.09.15 14:54:26 MSK )
Ответ на: комментарий от MrClon 21.09.15 14:51:10 MSK
Вот с этим все таки запускается: proc.kill()
Но пишет ошибку NameError: name ‘proc’ is not defined
хотя я объявил global proc
cdi1989
( 21.09.15 14:55:34 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 14:55:34 MSK
Но пишет ошибку NameError: name ‘proc’ is not defined
Ещё раз: Почитай про пространства имён.
shrub ★★★★★
( 21.09.15 14:59:33 MSK )
Ответ на: комментарий от shrub 21.09.15 14:59:33 MSK
Если присваивание производится за пределами всех инструкций def, она является глобальной для всего файла.
я так и делаю. а он говорит не определено((
cdi1989
( 21.09.15 15:05:33 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 15:05:33 MSK
>>> a = 'test' >>> def f1(): . global a . a = 'test 1' . >>> def f2(): . a = 'test 2' . >>> print a test >>> f1() >>> print a test 1 >>> f2() >>> print a test 1 >>>
Почему у меня после вызова f2() переменная содержит значение ‘test 1’?
shrub ★★★★★
( 21.09.15 15:11:36 MSK )
Ответ на: комментарий от shrub 21.09.15 15:11:36 MSK
Потому что после вызова f1() a = ‘test 1’ стала глобальной
cdi1989
( 21.09.15 15:14:29 MSK ) автор топика
Ответ на: комментарий от shrub 21.09.15 15:11:36 MSK
В этом случае у меня даже не запускается((
def on_task_open(): global proc import subprocess from subprocess import Popen, PIPE proc = subprocess.Popen("konsole -workdir " + full_dir + " -e bash /*/*/OpenFOAM/QW", shell=True)
def on_task_close(): proc.kill()
cdi1989
( 21.09.15 15:17:06 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 15:14:29 MSK
Почему тогда после вызова f2() переменная глобальная переменная «a» не приняла значение «test 2»?
MrClon ★★★★★
( 21.09.15 15:34:22 MSK )
Ответ на: комментарий от MrClon 21.09.15 15:34:22 MSK
Потому что она объявлена глобальной внутри f1() и, следовательно, именно это значение переменной «a» мы можем получить в других функциях
cdi1989
( 21.09.15 15:38:23 MSK ) автор топика
Ответ на: комментарий от cdi1989 21.09.15 15:17:06 MSK
В этом случае у меня даже не запускается((
Что значит, «не запускается»? Ошибка происходит?
proc = subprocess.Popen(«konsole -workdir » + full_dir + » -e bash /*/*/OpenFOAM/QW», shell=True)
Ты, может быть, имел в виду «konsole -workdir » + full_dir + » -e ‘bash /*/*/OpenFOAM/QW'» #Экранирован параметр к -e
Или, может быть, subprocess.Popen([‘konsole’, ‘-workdir’, full_dir, ‘-e’, ‘bash /*/*/OpenFOAM/QW’]) ?
proud_anon ★★★★★
( 21.09.15 16:26:42 MSK )
Ответ на: комментарий от cdi1989 21.09.15 15:38:23 MSK
Блин, ты так хитро запутался что я даже не знаю как тебя распутать. Лучшее что могу посоветовать это забыть всё что ты знаешь об областях видимости переменных и прочесть о том как оно на самом деле.
Что с ходу нагуглилось https://ru.wikibooks.org/wiki/Python/Учебник_Python_3.1#.D0.9E.D0.B1.D0.BB.D0.
Но перед тем всё-же можешь подумать почему функция f1() обращается к глобальной переменной «a», а f2() к локальной.
MrClon ★★★★★
( 21.09.15 16:52:33 MSK )
Ответ на: комментарий от shrub 21.09.15 15:11:36 MSK
a = 'test' # 'а' - глобальная переменная def f1(): global a # 'а' теперь берётся из глобальной области видимости # (действительно только для текущей области видимости, т.е в f1) a = 'test 1' def f2(): a = 'test 2' # Присваивание для локальной переменной 'a' (в текущей области видимости)
dimderbin ★
( 21.09.15 19:05:06 MSK )
Последнее исправление: dimderbin 21.09.15 19:05:48 MSK (всего исправлений: 1)
Ответ на: комментарий от cdi1989 21.09.15 14:47:49 MSK
и с тем и другим не запускается
cherry-pick
( 21.09.15 21:11:34 MSK )
Ответ на: комментарий от shrub 21.09.15 14:43:58 MSK
Судя по всему, ты пытаешься грохнуть несуществующий процесс. Поэтому у тебя и «не работает».
Потому что proc из первой функции и proc из второй — это две разных переменных?
Я не понял, в питоне что нельзя вывести ероры и варнинги в консоль куда-нибудь?
Если будет ошибка — сразу понятно что случилось.
К примеру: variable is not defined
И тогда человек знает, ок, почему это не определена, и далее курит про пространство имет и т.п.
kiotoze ★★★★
( 21.09.15 22:19:26 MSK )
Народ, а нас случаем не внесут в реестр за такую провакационную тему как убийство?
itn ★★★
( 21.09.15 22:50:10 MSK )
Ответ на: комментарий от kiotoze 21.09.15 22:19:26 MSK
Смотри Убить процесс в python (комментарий)
Топикстартер завис где-то между шагами «увидеть variable is not defined» и «курить про пространство имен»
MrClon ★★★★★
( 21.09.15 23:01:02 MSK )
Ответ на: комментарий от MrClon 21.09.15 23:01:02 MSK
оу, кажется я пропустил этот пост
П.С. звиняйте, нажрался. Наверное пора закрывать на сегодня вкладку с ЛОР
Как завершить процесс python multiprocess
у меня есть процесс хочу по его названию( не по PID ) завершить его, как это реализовать?
Отслеживать
задан 2 июн 2021 в 13:17
Артём Новокеков Артём Новокеков
27 3 3 бронзовых знака
Покажите пожалуйста в вопросе, где у вас есть процесс?
2 июн 2021 в 13:50
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
непонятно что имеется виду, если это рукотворный multiprocess процесс, то соответственно есть и его объект, у которого есть имя и метод terminate, берете объект процесса, сравниваете его имя, и при необходимости завершаете через terminate
import multiprocessing, time, random def test(s, m=500): while m > 0: print(f' = ') m -= 1 time.sleep(.5) if __name__ == '__main__': multiprocessing.freeze_support() count = 3 prcss = [multiprocessing.Process(name=f'test_', target=test, args=[f'run_test_']) for r in range(count)] pnames = [p.name for p in prcss] # имена процессов for p in prcss: p.start() while prcss: for p in prcss: name = random.choice(pnames) if p.name == name: # завершить по его названию p.terminate() prcss.remove(p) print(f'KILL ') break time.sleep(1)
если это сторонний процесс, то через psutil
import psutil for proc in psutil.process_iter(): if proc.name() == 'test process': # завершить по его названию proc.kill() break