c# – 本地打印机的SNMP?
我正在寻找一种从本地打印机获取信息的方法.也许与SNMP协议?
打印机与USB或PPI(并行端口)连接.所有打印机都有一个内部的TotalPagesCount并支持SNMP. 这里有一些打印机的例子: >兄弟HL1430 这可能吗?谢谢 解决方法
我认为SNMP是正确的方法.大多数打印机实现了
standard printer MIB和
RFC 1213 MIB,所以你可以从那里获得的任何财产都将与模型无关.例如,如果您查找序列号,您的属性可能是prtGeneralSerialNumber 1.3.6.1.2.1.43.5.1.1.17
对于其他属性,您将需要在特定的MIB中进行搜索,例如在HP Laserjet MIB中,您有很多内容,如印刷媒体使用,印刷媒体单面数,印刷媒体双工计数,使用量 – 墨粉覆盖率,扫描媒体使用量,全彩色页数….. 要使用SNMP,最多扩展库是Net-SNMP,但它使用C API,如果您需要在大量多线程应用程序或使用SNMPv3中使用它,我不建议使用.还有像link text这样的其他图书馆看起来非常有希望,但大多数可靠的图书馆都是商业而不是很便宜. 如果打印机是网络连接,以上所有这些都是很容易实现的,现在如果打印机是USB或PPI连接的,那么您需要手动进入HP SNMP Proxy Agent,您可以找到一个很棒的帖子here. 编辑 使用驱动程序黑客我的意思是逆向工程可能是每个驱动程序的工具.例如,如果打印机具有显示墨粉状态的实用程序,尝试了解它是如何工作的,我将开始使用Depends打开可执行文件,并查看它正在使用哪些DLL以及它们发布的方法,如果您发现一种方法,如GetTonerStatus在dll中,值得尝试使用它. alt text http://www.dependencywalker.com/snapshot.png 如果该工具是用.Net编写的,那么可以通过反编译来访问源代码(我不知道这个方法的法律问题).使用reflector做,你会看清楚. alt text http://corypeters.net/wp-content/uploads/netReflector.gif 有一本伟大的书涵盖了这个方面叫做Reversing: Secrets of Reverse Engineering 如前所述,这是一条漫长的道路,但可能是唯一实现您想要做的事情,您可能需要重新考虑项目的可行性,然后调查了一些我提到的主题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |