В Python вы можете использовать различные методы, чтобы проверить, запущен ли EXE (исполняемый) файл. Эта функция полезна в сценариях, когда вам необходимо отслеживать процессы или выполнять определенные действия в зависимости от рабочего состояния EXE-файла. В этой статье мы рассмотрим шесть различных методов и примеры кода для решения этой задачи.
Метод 1: библиотека psutil
Пример кода:
import psutil
def check_if_exe_running(exe_name):
for process in psutil.process_iter():
if process.name().lower() == exe_name.lower():
return True
return False
# Usage
exe_name = 'myapp.exe'
is_running = check_if_exe_running(exe_name)
print(f"{exe_name} is running: {is_running}")
Метод 2: WMI (инструментарий управления Windows)
Пример кода:
import wmi
def check_if_exe_running(exe_name):
c = wmi.WMI()
for process in c.Win32_Process():
if process.Name.lower() == exe_name.lower():
return True
return False
# Usage
exe_name = 'myapp.exe'
is_running = check_if_exe_running(exe_name)
print(f"{exe_name} is running: {is_running}")
Метод 3: модуль подпроцесса
Пример кода:
import subprocess
def check_if_exe_running(exe_name):
cmd = f'tasklist /FI "IMAGENAME eq {exe_name}"'
output = subprocess.check_output(cmd, shell=True).decode()
return exe_name.lower() in output.lower()
# Usage
exe_name = 'myapp.exe'
is_running = check_if_exe_running(exe_name)
print(f"{exe_name} is running: {is_running}")
Метод 4: библиотека pywin32
Пример кода:
import win32com.client
def check_if_exe_running(exe_name):
WMI = win32com.client.GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process')
for process in processes:
if process.Name.lower() == exe_name.lower():
return True
return False
# Usage
exe_name = 'myapp.exe'
is_running = check_if_exe_running(exe_name)
print(f"{exe_name} is running: {is_running}")
Метод 5: библиотека ctypes (только для Windows)
Пример кода:
import ctypes
def check_if_exe_running(exe_name):
snapshot = ctypes.windll.kernel32.CreateToolhelp32Snapshot(2, 0)
process_entry = ctypes.Structure()
process_entry.dwSize = ctypes.sizeof(process_entry)
if ctypes.windll.kernel32.Process32First(snapshot, ctypes.byref(process_entry)):
while True:
if process_entry.szExeFile.decode().lower() == exe_name.lower():
return True
if not ctypes.windll.kernel32.Process32Next(snapshot, ctypes.byref(process_entry)):
break
return False
# Usage
exe_name = 'myapp.exe'
is_running = check_if_exe_running(exe_name)
print(f"{exe_name} is running: {is_running}")
Метод 6: команда списка задач (только для Windows)
Пример кода:
import os
def check_if_exe_running(exe_name):
cmd = f'tasklist /FI "IMAGENAME eq {exe_name}"'
output = os.popen(cmd).read()
return exe_name.lower() in output.lower()
# Usage
exe_name = 'myapp.exe'
is_running = check_if_exe_running(exe_name)
print(f"{exe_name} is running: {is_running}")
В этой статье мы рассмотрели шесть различных методов проверки того, работает ли EXE-файл с использованием Python. Эти методы обеспечивают гибкость и могут использоваться в зависимости от ваших конкретных требований. Отслеживая процессы, вы можете предпринимать соответствующие действия или эффективно выполнять задачи системного администрирования.
Не забудьте выбрать метод, который лучше всего соответствует вашим потребностям и конкретной платформе, на которой вы работаете. Приятного кодирования!