如何枚举windows LPT端口及其I/O范围?
我正在从事通过lpt端口控制某些设备的项目。 我正在使用input32.dll获取对端口的原始访问,现在尝试枚举所有可用的LPT端口并获取它们的I/O范围 我现在可以检查设备管理器了,但是还有其他自动化的方法吗 现在我尝试使用WMI的一些示例代码,这些代码应该可以工作,但它不能如何枚举windows LPT端口及其I/O范围?,windows,wmi,lpt,Windows,Wmi,Lpt,我正在从事通过lpt端口控制某些设备的项目。 我正在使用input32.dll获取对端口的原始访问,现在尝试枚举所有可用的LPT端口并获取它们的I/O范围 我现在可以检查设备管理器了,但是还有其他自动化的方法吗 现在我尝试使用WMI的一些示例代码,这些代码应该可以工作,但它不能 Set wmiService = GetObject("winmgmts:\\.\root\cimv2") Set parallelports = wmiService.ExecQuery("SELECT * FROM
Set wmiService = GetObject("winmgmts:\\.\root\cimv2")
Set parallelports = wmiService.ExecQuery("SELECT * FROM Win32_ParallelPort")
For Each port In parallelports
q = "SELECT * FROM Win32_PnPEntity WHERE PNPDeviceID = '" & port.PNPDeviceID & "'"
Set pnpentities = wmiService.ExecQuery(q)
For Each pnpentity In pnpentities
wscript.echo pnpentity.PNPDeviceID
Next
Next
在“pnpentities中的每个pnpentities”行中,我得到一个错误。
如果找到相应的实体对我有帮助,我也不是舒尔
附言。
最后,我找到了如何枚举lpt i/o端口范围的方法
Set wmiService = GetObject("winmgmts:\\.\root\cimv2")
Set parallelports = wmiService.ExecQuery("SELECT * FROM Win32_ParallelPort")
For Each port In parallelports
Set port_resources = wmiService.ExecQuery("ASSOCIATORS OF {Win32_ParallelPort.DeviceID='" & port.DeviceID & "'} WHERE ResultClass = Win32_PortResource")
For Each port_resource In port_resources
wscript.echo port_resource.Caption
Next
Next
出现错误是因为
PNPDeviceID
包含反斜杠(\
),WQL查询中的反斜杠必须加倍。只需在端口.PNPDeviceID
中将\
替换为\
,然后再将其插入查询,您的脚本即可正常工作:
strPNPDeviceID = Replace(port.PNPDeviceID, "\", "\\")
Set pnpentities = wmiService.ExecQuery( _
"SELECT * FROM Win32_PnPEntity WHERE PNPDeviceID = '" & strPNPDeviceID & "'")
您可能还发现这个问题很有用: