Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何枚举windows LPT端口及其I/O范围?_Windows_Wmi_Lpt - Fatal编程技术网

如何枚举windows LPT端口及其I/O范围?

如何枚举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

我正在从事通过lpt端口控制某些设备的项目。 我正在使用input32.dll获取对端口的原始访问,现在尝试枚举所有可用的LPT端口并获取它们的I/O范围

我现在可以检查设备管理器了,但是还有其他自动化的方法吗

现在我尝试使用WMI的一些示例代码,这些代码应该可以工作,但它不能

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 & "'")

您可能还发现这个问题很有用: