c#获取惠普打印机状态

  • c#获取惠普打印机状态已关闭评论
  • 24 次浏览
  • A+
所属分类:.NET技术
摘要

最近遇到一个项目,由于客户指定了打印机型号:HP LaserJet Pro M501n ,本来想着参考网上的代码,使用System.Management来实现对打印机状态的查询,测试过程中发现无论是缺纸、空闲,获取到的统统都是空闲状态,咨询售后也是说无法获取状态,也不提供SDK;后面在社区看见可以通过网页访问打印机状态,输入IP即可,索性试了下,页面如下图:

最近遇到一个项目,由于客户指定了打印机型号:HP LaserJet Pro M501n ,本来想着参考网上的代码,使用System.Management来实现对打印机状态的查询,测试过程中发现无论是缺纸、空闲,获取到的统统都是空闲状态,咨询售后也是说无法获取状态,也不提供SDK;后面在社区看见可以通过网页访问打印机状态,输入IP即可,索性试了下,页面如下图:

c#获取惠普打印机状态

 

从图上可以看到有打印机当前的状态为【已打开睡眠模式】,其他状态例如缺纸也测试过,是可以正常显示的,所以想着能通过网页访问的方式,找到对应元素下面的内容,

通过后台

代码如下:

   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;             }          }

运行代码可以看到获取到了状态内容,如图:

c#获取惠普打印机状态

这样也算是实现了获取打印机状态了。