请教python杀死windows进程

jeky_zhang2013 2012-07-03 11:28:43
最近在学习python方面的知识,根据这门语言很简洁,挺有意思的,这里想请教大家一个问题。
请教下在python中如何杀掉windows中的进程,根据进程名获取进程的ID,我的版本是2.7,没有psutil模块,请教大家下如何实现的,谢谢!
...全文
899 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gloveing 2012-07-04
  • 打赏
  • 举报
回复
import os

command = 'taskkill /F /IM QQ.exe' #比如杀死QQ进程
os.system(command)
jeky_zhang2013 2012-07-04
  • 打赏
  • 举报
回复
太感谢了,这个好用,呵呵

分析了下2楼的代码,有些在2.7中好像接口变化了,不过还是学到点东西,谢谢~~
[Quote=引用 4 楼 的回复:]

Python code
import os

command = 'taskkill /F /IM QQ.exe' #比如杀死QQ进程
os.system(command)
[/Quote]
jeky_zhang2013 2012-07-03
  • 打赏
  • 举报
回复
谢谢,我好好研究下~~
bugs2k 2012-07-03
  • 打赏
  • 举报
回复
import subprocess
import time

import wmi
c = wmi.WMI ()

#
# Kill a process by id
#
notepad = subprocess.Popen (["notepad.exe"])
time.sleep (1)
for process in c.Win32_Process (ProcessId=notepad.pid):
process.Terminate ()

#
# Which process ids correspond to an .exe
#
for i in range (5):
subprocess.Popen (["notepad.exe"])

for process in c.Win32_Process (caption="notepad.exe"):
print process.ProcessId

#
# _Some_ (but not all) of the information about each file
#
for process in c.Win32_Process (caption="notepad.exe"):
print process
process.Terminate ()
bugs2k 2012-07-03
  • 打赏
  • 举报
回复
别人写的,转一下:

import ctypes
import sys

TH32CS_SNAPPROCESS = 0x00000002
class PROCESSENTRY32(ctypes.Structure):
_fields_ = [("dwSize", ctypes.c_ulong),
("cntUsage", ctypes.c_ulong),
("th32ProcessID", ctypes.c_ulong),
("th32DefaultHeapID", ctypes.c_ulong),
("th32ModuleID", ctypes.c_ulong),
("cntThreads", ctypes.c_ulong),
("th32ParentProcessID", ctypes.c_ulong),
("pcPriClassBase", ctypes.c_ulong),
("dwFlags", ctypes.c_ulong),
("szExeFile", ctypes.c_char * 260)]

def getProcList():
CreateToolhelp32Snapshot = ctypes.windll.kernel32.CreateToolhelp32Snapshot
Process32First = ctypes.windll.kernel32.Process32First
Process32Next = ctypes.windll.kernel32.Process32Next
CloseHandle = ctypes.windll.kernel32.CloseHandle
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
pe32 = PROCESSENTRY32()
pe32.dwSize = ctypes.sizeof(PROCESSENTRY32)
if Process32First(hProcessSnap,ctypes.byref(pe32)) == False:
print >> sys.stderr, "Failed getting first process."
return
while True:
yield pe32
if Process32Next(hProcessSnap,ctypes.byref(pe32)) == False:
break
CloseHandle(hProcessSnap)

def getChildPid(pid):
procList = getProcList()
for proc in procList:
if proc.th32ParentProcessID == pid:
yield proc.th32ProcessID

def killPid(pid):
childList = getChildPid(pid)
for childPid in childList:
killPid(childPid)
handle = ctypes.windll.kernel32.OpenProcess(1, False, pid)
ctypes.windll.kernel32.TerminateProcess(handle,0)


if __name__ =='__main__':
args = sys.argv
if len(args) >1 :
pid = int(args[1])
killPid(pid)
else:
procList = getProcList()
for proc in procList:
print proc.szExeFile+' '+str(proc.th32ParentProcessID) + ' '+str(proc.th32ProcessID)


#----------------------
#
# Usage demo
#
#----------------------
import subprocess
import time

#import winproc

timeout = 2
process = subprocess.Popen("cmd /k ping localhost -t",shell = True)
start = int(time.time())
while process.poll()==None:
now = int(time.time())
if int (now - start) >timeout:
pid = process.pid
break

winproc.killPid(pid)

print "End"


http://fayaa.com/code/view/538/

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧