【问题标题】:How to kill a Windows running exe with Python如何使用 Python 杀死正在运行的 Windows exe
【发布时间】:2019-05-09 09:20:45
【问题描述】:

如何在后台进程中结束这个 exe 文件的任务:

我的代码:

import os
import subprocess
import time
import win32com.client

wmi=win32com.client.GetObject('winmgmts:')

for p in wmi.InstancesOf('win32_process'):    
    # print(p.Name)
    if p.Name == 'boltzmann.exe':
        print("Ok") 

【问题讨论】:

  • 你能试试p.Terminate()吗?
  • p.terminate() 不工作
  • "不工作" ...它会引发错误(如果是这样呢?)还是只是不停止进程?

标签: python kill-process taskmanager


【解决方案1】:

在我的代码中,我以进程 chrome.exe 为例(将其替换为 boltzmann.exe):

import os
import subprocess
import time
import win32com.client
import signal


wmi=win32com.client.GetObject('winmgmts:')


def getpid(process_name):
    import os
    return [item.split()[1] for item in os.popen('tasklist').read().splitlines()[4:] if process_name in item.split()]


for p in wmi.InstancesOf('win32_process'):
    if p.Name == 'chrome.exe':
        process_id = getpid('chrome.exe')
        if len(process_id) > 1:
            for x in process_id:
                pid = int(x)
                os.kill(pid, signal.SIGTERM)

        else:
            pid = int("".join(getpid('chrome.exe')))
            os.kill(pid, signal.SIGTERM)

我尽我所能使用内置库来完成这一切,这样您就不必导入很多东西

一些注意事项:

  1. 进程名区分大小写

  2. 如果进程以更高的优先级运行,则进程不会终止,并且会出现拒绝访问错误

【讨论】:

    猜你喜欢
    • 2019-03-21
    • 2018-10-28
    • 2013-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多