天天看點

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的一些限制導緻的報錯吧

希望有大佬能夠評論區指教一下~~~