我在Windows 7中运行Python 2.7,安装了pywin32-216-win32-py2.7
。我正在运行以下代码,并且它在一台计算机上运行良好,但在另一台计算机上输出错误(包括Win7,Py2.7,相同的pywin库)。win32pdh.EnumObjectItems调用错误
错误消息:
File "C:\Energy\Support Sheets\Kill Excel.py", line 9, in GetProcessID items, instances = win32pdh.EnumObjectItems(None, None, object, win32pdh.PERF_DETAIL_WIZARD) error: (-1073738824, 'EnumObjectItems for buffer size', 'The specified object was not found on the computer.')
全码:
import win32api, win32con
import win32pdh
import os
import signal
import time
def GetProcessID(name) :
object = "Process"
items, instances = win32pdh.EnumObjectItems(None, None, object, win32pdh.PERF_DETAIL_WIZARD)
val = None
if name in instances :
hq = win32pdh.OpenQuery()
hcs = [ ]
item = "ID Process"
path = win32pdh.MakeCounterPath((None, object, name, None, 0, item))
hcs.append(win32pdh.AddCounter(hq, path))
win32pdh.CollectQueryData(hq)
time.sleep(0.01)
win32pdh.CollectQueryData(hq)
for hc in hcs:
type, val = win32pdh.GetFormattedCounterValue(hc, win32pdh.PDH_FMT_LONG)
win32pdh.RemoveCounter(hc)
win32pdh.CloseQuery(hq)
return val
def Kill_Process_pid(pid):
handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, 0, pid) #get process handle
win32api.TerminateProcess(handle, -1) #kill by handle
win32api.CloseHandle(handle) #close api
def Kill_Process(name):
pid = GetProcessID(name)
if pid:
try:
Kill_Process_pid(pid)
return True
except:
pass
else:
return False
# MAIN FUNCTION
print 'Killing Excel instances...',
while Kill_Process('EXCEL'):
time.sleep(0.2)
print 'Done!'
是您的语言环境英语吗?如果不是,则对象名称可能拼写不同。 – Frank