Как заморозить другой процесс на Python?

в cheat engine есть функция, при использовании которой процесс замораживается, то есть он просто зависает и ничего не будет происходить пока ты не разморозишь его. Так вот как это написать на языке python. Буду благодарен если кто-то скинет готовый код


Ответы (1 шт):

Автор решения: tiovi

Код для MacOS:

import tkinter as tk
import subprocess

def freeze_process(process_name):
    try:
        pid = subprocess.check_output(['pgrep', '-x', process_name]).strip().decode('utf-8')
        subprocess.run(['kill', '-STOP', pid])
    except subprocess.CalledProcessError:
        pass

def unfreeze_process(process_name):
    try:
        pid = subprocess.check_output(['pgrep', '-x', process_name]).strip().decode('utf-8')
        subprocess.run(['kill', '-CONT', pid])
    except subprocess.CalledProcessError:
        pass

def freeze_button_click():
    process_name = entry.get()
    freeze_process(process_name)

def unfreeze_button_click():
    process_name = entry.get()
    unfreeze_process(process_name)

window = tk.Tk()
window.title("Process Management")

label = tk.Label(window, text="Enter process name:")
label.pack()

entry = tk.Entry(window)
entry.pack()

freeze_button = tk.Button(window, text="Freeze", command=freeze_button_click)
freeze_button.pack()

unfreeze_button = tk.Button(window, text="Unfreeze", command=unfreeze_button_click)
unfreeze_button.pack()

window.mainloop()

Код для Windows:

import tkinter as tk
import psutil

def freeze_process(process_name):
    for proc in psutil.process_iter():
        if proc.name() == process_name:
            proc.suspend()

def unfreeze_process(process_name):
    for proc in psutil.process_iter():
        if proc.name() == process_name:
            proc.resume()

def freeze_button_click():
    process_name = entry.get()
    freeze_process(process_name)

def unfreeze_button_click():
    process_name = entry.get()
    unfreeze_process(process_name)

window = tk.Tk()
window.title("Process Management")

label = tk.Label(window, text="Enter process name:")
label.pack()

entry = tk.Entry(window)
entry.pack()

freeze_button = tk.Button(window, text="Freeze", command=freeze_button_click)
freeze_button.pack()

unfreeze_button = tk.Button(window, text="Unfreeze", command=unfreeze_button_click)
unfreeze_button.pack()

window.mainloop()

Я использовал Tkinter чтобы можно было удобнее управлять разморозкой и заморозкой процесса. Но скрипты заморозки и разморозки можно реализовать по отдельности без использования GUI.

→ Ссылка