天天看点

pywintypes.com_error: (-2147221020, ‘无效的语法‘, None, None)的解决

关于pywintypes.com_error: -2147221020, '无效的语法', None, None

    • 最后误打误撞的发现

在使用python判断进程是否存在的时候发现一个这个错误

pywintypes.com_error: (-2147221020, ‘无效的语法’, None, None)

具体代码如下

import win32com.client
    import time


    def check_exsit(process_name):
        WMI = win32com.client.GetObject('winmgmts:')
        processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % process_name)
        if len(processCodeCov) > 0:
            return True


    while True:
        if check_exsit('calc.exe'):
            print(11111)
            time.sleep(0.5)
            os.popen("taskkill /F /IM calc.exe")
            pass

           

本来单独跑这个是顺便跑的起来的

我的项目就是在多个线程中其中有一个去检测这个exe是否存在

期间一直怀疑是不是因为while跑太快导致的读取错误,后面发现加入了sleep只是延缓报错而已

网上搜了半天也没有一个解决的办法

最后误打误撞的发现

》》》》pythoncom.CoInitialize()
        WMI = win32com.client.GetObject('winmgmts:')
        processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % process_name)
        if len(processCodeCov) > 0:
            》》》》pythoncom.CoUninitialize()
           

加入这两个之后就不报错了

由于网络关于win32的资料太少具体原因也不知道到底怎么解决的这个问题

不过从字面意思就是说win32的一些限制导致的报错吧

希望有大佬能够评论区指教一下~~~