python在子线程中使用WMI报错-2147221020-moniker,i,bindCTX=pythoncom.MKParseDisplayName(Pathname)

python在子线程中想要使用WMI查看一个进程是否活着,但是在子线程中调用时会出现如下错误:




后来查找原因发现需要在每次使用WMI时进行初始化:

#check_exsit
def check_exsit(process_name):
#在线程中使用需要加初始化和去初始化方法
pythoncom.CoInitialize()
WMI = win32com.client.GetObject( 'winmgmts:')
processCodeCov = WMI.ExecQuery( 'select * from Win32_Process where Name="%s"' % process_name)
if len(processCodeCov) > 0: #判断操作
print '%s is exists' % process_name
pythoncom.CoUninitialize()
return True
else:
print '%s is not exists' % process_name
pythoncom.CoUninitialize()
return False



while True:
if check_exsit( 'gui_flash_programmer.exe') == False:
lab[i].configure(text = "Flash programmer2 not open...")
lab[i].configure(bg = 'blue')
else:
lab[i].configure(bg = 'blue')
break
time.sleep( 0.3)
lab[i].configure(bg = 'yellow')
time.sleep( 0.3)


添加初始化方法后可以正常使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值