最近遇到一個項目,由於客戶指定了印表機型號:HP LaserJet Pro M501n ,本來想著參考網上的代碼,使用System.Management來實現對印表機狀態的查詢,測試過程中發現無論是缺紙、空閑,獲取到的統統都是空閑狀態,咨詢售後也是說無法獲取狀態,也不提供SDK;後面在社區看見可以通 ...
最近遇到一個項目,由於客戶指定了印表機型號: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; } }
運行代碼可以看到獲取到了狀態內容,如圖:
這樣也算是實現了獲取印表機狀態了。