最近遇到一个项目,由于客户指定了打印机型号:HP LaserJet Pro M501n ,本来想着参考网上的代码,使用System.Management来实现对打印机状态的查询,测试过程中发现无论是缺纸、空闲,获取到的统统都是空闲状态,咨询售后也是说无法获取状态,也不提供SDK;后面在社区看见可以通过网页访问打印机状态,输入IP即可,索性试了下,页面如下图:
从图上可以看到有打印机当前的状态为【已打开睡眠模式】,其他状态例如缺纸也测试过,是可以正常显示的,所以想着能通过网页访问的方式,找到对应元素下面的内容,
通过后台
代码如下:
using HtmlAgilityPack; public static bool GetWebPageContent(string url) { try { // 创建 HtmlWeb 实例 HtmlWeb web = new HtmlWeb(); // 加载网页内容 HtmlDocument doc = web.Load(url); // 查找指定 <td> 标签下 id 为 deviceStatus_tableCell 的内容 HtmlNode node = doc.DocumentNode.SelectSingleNode("//td[@id='deviceStatus_tableCell']"); if (node != null) { string content = node.InnerText.Trim(); if (content.Contains("\n")) { int lastIndex = content.IndexOf("\n"); content = content.Substring(0, lastIndex).Trim(); } //根据每种状态自行判断该如何执行业务............ return true; } else { return false; } } catch (Exception e) { //MessageBox.Show($"解析HTML时发生错误: {e.Message}"); return false; } }
运行代码可以看到获取到了状态内容,如图:
这样也算是实现了获取打印机状态了。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容