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