我可以从WMI获取deviceID,然后我想使用该deviceID来检查天气设备处于启用\禁用状态,如果它的状态是否正常,基本上我想使用WQL来查询该设备稍后使用这个USB设备唯一的DeviceID。这是我使用的代码示例,并使用
获得异常import wmi
devid = "USB\VID_04F2&PID_B315\6&EF94D1A&0&6"
c = wmi.WMI()
q2 = "SELECT * FROM Win32_PnPEntity WHERE DeviceID = " + devid + " "
dev = c.query(q2)
当我运行此代码时,我收到以下错误:
追踪(最近的呼叫最后):
文件"",第1行,在 文件" C:\ Python27 \ lib \ site-packages \ wmi.py",第1009行,在查询中 在self._raw_query(wql)中为obj返回[_wmi_object(obj,instance_of,fields)] 文件" C:\ Python27 \ lib \ site-packages \ win32com \ client \ util.py",第84行,下一步返回_get_good_object_(self。 iter .next(), resultCLSID = self.resultCLSID)
pywintypes.com_error:( - 2147217385,' OLE错误0x80041017',无,无)
可能我的wql查询在某种程度上是错误的,你能给我一个组合查询的正确方法的例子吗?
答案 0 :(得分:0)
\
是WQL中的special character,必须使用反斜杠转义,因此devid
应为:
devid = "'USB\\VID_04F2&PID_B315\\6&EF94D1A&0&6'"
编辑:我也注意到你没有包装常量,所以我在值周围加了一个引号。