WMI inside a thread - pywintypes.com_error

Viewed 200

I'm trying to call this function:

c = wmi.WMI()

def get_app_name(hwnd):
    """Get applicatin filename given hwnd."""
    try:
        _, pid = win32process.GetWindowThreadProcessId(hwnd)
        for p in c.query('SELECT Name FROM Win32_Process WHERE ProcessId = %s' % str(pid)):
            exe = p.Name
            break
    except:
        import traceback
        print(traceback.print_exc())
        return None
    else:
        return exe

from my flask application. I believe the error below is occurring because flask is running inside a thread. The function get_app_name works if it is called without running flask.

This is the full error message:

Traceback (most recent call last):
  File "\venvpc\lib\site-packages\wmi.py", line 1064, in _raw_query
    return self._namespace.ExecQuery(strQuery=wql, iFlags=flags)
  File "<COMObject winmgmts:>", line 3, in ExecQuery
  File "\venvpc\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
    result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'SWbemServicesEx', None, None, 0, -2147221008), None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/RestAPI.py", line 11, in get_app_name
    for p in c.query('SELECT Name FROM Win32_Process WHERE ProcessId = %s' % str(pid)):
  File "\venvpc\lib\site-packages\wmi.py", line 1072, in query
    return [ _wmi_object(obj, instance_of, fields) for obj in self._raw_query(wql) ]
  File "\venvpc\lib\site-packages\wmi.py", line 1066, in _raw_query
    handle_com_error()
  File "\venvpc\lib\site-packages\wmi.py", line 258, in handle_com_error
    raise klass(com_error=err)
wmi.x_wmi: <x_wmi: Unexpected COM Error (-2147352567, 'Exception occurred.', (0, 'SWbemServicesEx', None, None, 0, -2147221008), None)>

I have read about pythoncom.CoInitialize however I had no success in making it work.

Any help is appreciated

0 Answers
Related