Как я могу найти процесс по имени и убить с помощью ctypes?

В Windows я хочу найти процесс по имени «exename.exe», а затем убить его.

Как я могу сделать это ctypes, а не какой-либо другой сторонний модуль?

2 Solutions collect form web for “Как я могу найти процесс по имени и убить с помощью ctypes?”

Попробуй это:

import sys, os.path, ctypes, ctypes.wintypes Psapi = ctypes.WinDLL('Psapi.dll') EnumProcesses = Psapi.EnumProcesses EnumProcesses.restype = ctypes.wintypes.BOOL GetProcessImageFileName = Psapi.GetProcessImageFileNameA GetProcessImageFileName.restype = ctypes.wintypes.DWORD Kernel32 = ctypes.WinDLL('kernel32.dll') OpenProcess = Kernel32.OpenProcess OpenProcess.restype = ctypes.wintypes.HANDLE TerminateProcess = Kernel32.TerminateProcess TerminateProcess.restype = ctypes.wintypes.BOOL CloseHandle = Kernel32.CloseHandle MAX_PATH = 260 PROCESS_TERMINATE = 0x0001 PROCESS_QUERY_INFORMATION = 0x0400 count = 32 while True: ProcessIds = (ctypes.wintypes.DWORD*count)() cb = ctypes.sizeof(ProcessIds) BytesReturned = ctypes.wintypes.DWORD() if EnumProcesses(ctypes.byref(ProcessIds), cb, ctypes.byref(BytesReturned)): if BytesReturned.value<cb: break else: count *= 2 else: sys.exit("Call to EnumProcesses failed") for index in range(BytesReturned.value / ctypes.sizeof(ctypes.wintypes.DWORD)): ProcessId = ProcessIds[index] hProcess = OpenProcess(PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION, False, ProcessId) if hProcess: ImageFileName = (ctypes.c_char*MAX_PATH)() if GetProcessImageFileName(hProcess, ImageFileName, MAX_PATH)>0: filename = os.path.basename(ImageFileName.value) if filename == 'notepad.exe': TerminateProcess(hProcess, 1) CloseHandle(hProcess) 

Это может быть обман, но он работает, даже не прибегая к использованию ctypes.

 import subprocess subprocess.call("taskkill /IM exename.exe") 

taskkill – это команда Windows; это просто вызывает его через Python.

  • Самый быстрый способ сделать снимок экрана с помощью python на окнах
  • Python: gettext не загружает переводы в Windows
  • сбой компиляции при запуске anano - windows 8.1 64 бит с дистрибутивом Anaconda python
  • Чтение HKEY CURRENT USER из реестра Python с указанием пользователя
  • Python: получение времени модификации файла с большим разрешением, чем второй
  • Индикатор выполнения Windows в Python Tkinter
  • Сделать окно прозрачным с помощью Win32?
  • Windows: медленный запуск приложения
  • Python - лучший язык программирования в мире.