线程内的WMI-pywintypes.com_error

问题描述

我正在尝试调用此函数:

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
在我的烧瓶应用程序中

。我相信下面的错误是由于烧瓶在线程内运行而发生的。如果在不运行flask的情况下调用函数get_app_name,则该函数有效。

这是完整的错误消息:

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,-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,None)>

我已经读过有关pythoncom.CoInitialize的信息,但是我没有使其成功。

感谢您的帮助

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)