如何使用win32应用程序接口获取给定端口名称的网络打印机的IP地址?
我尝试查看PRINTER_INFO_* structs
,但它似乎不在那里。
发布于 2009-10-19 22:41:06
我不认为有一个标准的方法来获取IP地址。网络端口监视器可能有不同的不兼容实现。对于我的网络打印机,IP地址是端口名称的一部分(例如IP_192_168.1.104
)。如果它是这种形式,那么您可能能够将其解析出来,但我不认为这是通用的。
使用EnumPorts
可以确定它是否是网络打印机,但我仍然看不到获取IP地址的方法。
发布于 2013-08-20 13:25:34
您可以通过PRINTER_INFO_2获取端口名称,并从注册表中获取ip,路径为: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports the ip store in "HostName“
发布于 2009-10-19 10:12:10
与任何其他IP网络设备一样,打印机将具有IP地址(表示其以太网卡),并将在特定端口上运行服务(标识响应打印机消息的程序)。这仅仅是网络方面的东西,与打印机相关的东西没有任何关系。
因此,由于它只有端口,所以没有办法找到它的IP地址。可能所有其他打印机上的服务都侦听同一端口。
假设您拥有打印机的名称,则需要查询您的域的名称服务。此服务将网络地址映射到“符号”名称。
使用winsock2应用程序接口,我相信它是您需要的gethostbyname
。这将按其名称检索打印机的主机信息。
https://stackoverflow.com/questions/1587716
复制相似问题