国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C# 實(shí)現(xiàn)打印機(jī)隊(duì)列監(jiān)控Win32_PrintJob,Win32_Printer

這篇具有很好參考價(jià)值的文章主要介紹了C# 實(shí)現(xiàn)打印機(jī)隊(duì)列監(jiān)控Win32_PrintJob,Win32_Printer。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

實(shí)現(xiàn)一個(gè)檢測系統(tǒng)發(fā)出的打印隊(duì)列文件,打印的狀態(tài),打印機(jī)狀態(tài)的模塊。

先上效果圖

C# 實(shí)現(xiàn)打印機(jī)隊(duì)列監(jiān)控Win32_PrintJob,Win32_Printer

1.需要用到的技術(shù)

要用到Win32_PrintJob,Win32_Printer。

其中,Win32_Printer是打印機(jī)的各種狀態(tài)和控制。

Win32_Printer 類 - Win32 apps | Microsoft Learn

Win32_PrintJob是打印隊(duì)列的各種數(shù)據(jù)和狀態(tài)。Win32_PrintJob 類 - Win32 apps | Microsoft Learn

需要用到using System.Management; 這個(gè)庫如果沒有,就使用NuGet去獲取

C# 實(shí)現(xiàn)打印機(jī)隊(duì)列監(jiān)控Win32_PrintJob,Win32_Printer


2.核心實(shí)現(xiàn)

2.1獲取系統(tǒng)默認(rèn)打印機(jī)名稱?

//獲取操作系統(tǒng)默認(rèn)打印機(jī)名稱
public string GetDefPrinterName()
{
     //獲取所有打印機(jī)信息
     string query = string.Format("SELECT * from Win32_Printer ");
     var searcher = new ManagementObjectSearcher(query);
     var printers = searcher.Get();
     string strState = "";
     foreach (var printer in printers)
     {
         if (bool.Parse(printer.Properties["Default"].Value.ToString()) == true)
         {
             defPrintName = printer.Properties["DeviceID"].Value.ToString();
         }
     }
     return defPrintName;
}

2.2獲取系統(tǒng)默認(rèn)打印機(jī)狀態(tài)

public string GetPrintState()
{
   //獲取所有打印機(jī)信息
   string query = string.Format("SELECT * from Win32_Printer");
   var searcher = new ManagementObjectSearcher(query);
   var printers = searcher.Get();
   string strState = "";
   string defPrintName = "";
   foreach (var printer in printers)
   {
       if (bool.Parse(printer.Properties["Default"].Value.ToString()) == true)
       {
           int status = Int32.Parse(printer.Properties["ExtendedPrinterStatus"].Value.ToString());
           strState = ExtendedPrinterStatus[status - 1];
           break;
       }
    }
    return strState;
}

這段代碼寫的不好,在select * from Win32_Printer這里是可以加上WHERE的。應(yīng)該可以用? WHERE xxxName="Default"的方式去篩選出默認(rèn)打印機(jī),代碼更簡介。

3.獲取打印隊(duì)列與打印狀態(tài)

public List<PrintJob> GetPrintList()
{
    List<PrintJob> list = new List<PrintJob>();

    var query2 = "SELECT * FROM Win32_PrintJob";
    using (var searcher2 = new ManagementObjectSearcher(query2))
    {
        var collection = searcher2.Get();
        if (collection.Count > 0)
        {
            foreach (ManagementObject item in collection)
            {
                string str = item.Properties["DriverName"].Value.ToString();
                if (defPrintName.Contains(item.Properties["DriverName"].Value.ToString()))
                {
                    try
                    {
                        PrintJob job = new PrintJob();
                        job.Document = (string)item.Properties["Document"].Value;
                        job.JobId = Int32.Parse(item.Properties["JobId"].Value.ToString()).ToString();
                        job.TotalPages = item.Properties["PaperSize"].Value.ToString();
                        job.PagesPrinted = Int32.Parse(item.Properties["PagesPrinted"].Value.ToString()).ToString();
                        job.TotalPages = Int32.Parse(item.Properties["TotalPages"].Value.ToString()).ToString();
                        job.TimeSubmitted = item.Properties["TimeSubmitted"].Value.ToString();
                        //job.StatusMask = GetStatusMaskCh(Int32.Parse(item.Properties["StatusMask"].Value.ToString()));
                        if(item.Properties["JobStatus"].Value!=null)
                        {
                            job.JobStatus = item.Properties["JobStatus"].Value.ToString();
                        }
                        else
                        {
                            job.JobStatus = "";
                        }
                                
                        list.Add(job);
                    }
                    catch (Exception ex)
                    {

                    }

                }
            }
        }
    }

    return list;
}

這里的PrintJob是我自己創(chuàng)建的一個(gè)類,用來記錄和傳遞我想要的狀態(tài)的。請結(jié)合文章簽名微軟關(guān)于PrintJob的類的解釋來看。我這里只是自己挑選了些我需要的出來。其余的均可采用上述代碼中

item.Properties["Document"].Value

的方式來獲取。我的PrintJob類構(gòu)建如下:

 public class PrintJob
    {
        /// <summary>
        /// 文件名稱
        /// </summary>
        public string Document { get; set; }
        /// <summary>
        /// 打印序列
        /// </summary>
        public string JobId { get; set; }
        /// <summary>
        /// 打印機(jī)返回的狀態(tài)中文描述字符串
        /// </summary>
        public string JobStatus { get; set; }
        /// <summary>
        /// 頁面大小
        /// </summary>
        public string PaperSize { get; set; }
        /// <summary>
        /// 已打印頁數(shù)
        /// </summary>
        public string PagesPrinted { get; set; }
        /// <summary>
        /// 總頁數(shù)
        /// </summary>
        public string TotalPages { get; set; }
        /// <summary>
        /// 提交時(shí)間
        /// </summary>
        public string TimeSubmitted { get; set; }
        /// <summary>
        /// 狀態(tài)
        /// </summary>
        public string StatusMask { get; set; }

    }

特別說明下JobStatus ,這個(gè)獲取的是打印機(jī)返回的狀態(tài)文本描述。JobStatus是人最容易看懂的打印狀態(tài)。而StatusMask、Status的狀態(tài)更多是打印錯(cuò)誤的狀態(tài),詳情請閱讀微軟官方文檔。

C# 實(shí)現(xiàn)打印機(jī)隊(duì)列監(jiān)控Win32_PrintJob,Win32_Printer文章來源地址http://www.zghlxwxcb.cn/news/detail-442912.html

到了這里,關(guān)于C# 實(shí)現(xiàn)打印機(jī)隊(duì)列監(jiān)控Win32_PrintJob,Win32_Printer的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 解決:Win11無法連接網(wǎng)絡(luò)打印機(jī)

    解決:Win11無法連接網(wǎng)絡(luò)打印機(jī)

    (一)打開本地組策略。 ????????1.1 按win+R鍵盤組合鍵打開“運(yùn)行”。在運(yùn)行框中輸入 “ gpedit.msc ”,回車鍵。 ? ? ? ? 1.2?“開始”菜單中搜索:組策略,然后出現(xiàn)【編輯組策略】,點(diǎn)擊進(jìn)入。 ?(二)管理模板 -- 打印機(jī) -- 配置RPC連接設(shè)置。雙擊打開 ?(三)勾選【

    2024年02月17日
    瀏覽(28)
  • win10打印機(jī)拒絕訪問解決方法

    win10打印機(jī)拒絕訪問解決方法

    ? ? ? ?一直以來 , 在安裝使用共享打印機(jī)打印一些文件的時(shí)候,會遇到錯(cuò)誤提示:“無法訪問 . 你可能沒有權(quán)限使用網(wǎng)絡(luò)資源。請與這臺服務(wù)器的管理員聯(lián)系”的問題,那為什么共享打印機(jī)拒絕訪問呢?別著急,下面為大家?guī)硐嚓P(guān)的解決方法。 ? ? ? ?默認(rèn)情況下, Win

    2024年02月04日
    瀏覽(94)
  • Win10 電腦無法連接另外一臺電腦的共享打印機(jī)提示W(wǎng)indows無法連接到打印機(jī),拒絕訪問

    Win10 電腦無法連接另外一臺電腦的共享打印機(jī)提示W(wǎng)indows無法連接到打印機(jī),拒絕訪問

    Win10 專業(yè)版 Epson L1110打印機(jī) 電腦A共享自己的打印機(jī) 電腦B共享電腦A的打印機(jī) 電腦B連接電腦A的共享打印機(jī)提示W(wǎng)indows無法連接到打印機(jī),拒絕訪問 1.檢查電腦A的配置(未解決)

    2024年02月11日
    瀏覽(103)
  • win11打印機(jī)共享怎么連接第二臺電腦?

    win11打印機(jī)共享怎么連接第二臺電腦?

    我們在辦公時(shí)經(jīng)常需要用到打印機(jī),將打印機(jī)連接上電腦就可以享受打印服務(wù)了。但是很多用戶對win11系統(tǒng)還不熟悉,升級win11系統(tǒng)之后就不知道怎么操作了。今天小編要給大家介紹的就是win11打印機(jī)共享連接第二臺電腦的操作方法。 win11打印機(jī)共享設(shè)置方法 1、打開win11的打印

    2024年02月15日
    瀏覽(99)
  • win11共享打印機(jī)無法連接怎么辦

    win11共享打印機(jī)無法連接怎么辦

    很多小伙伴都將電腦更新升級成Win11系統(tǒng),當(dāng)我們使用多臺電腦卻只有一臺打印機(jī)時(shí),就需要共享打印機(jī)卻出現(xiàn)了Win11共享打印機(jī)無法連接的情況,遇到這種問題應(yīng)該怎么解決呢,下面小編就給大家詳細(xì)介紹一下Win11共享打印機(jī)無法連接的解決方法,大家感興趣的話就來看看吧

    2023年04月12日
    瀏覽(111)
  • win10電腦搜索不到打印機(jī)?解決方法如下

    win10電腦搜索不到打印機(jī)?解決方法如下

    win10電腦搜索不到打印機(jī)怎么辦?有的朋友想要為自己的win10系統(tǒng)添加打印機(jī)設(shè)備,但是發(fā)現(xiàn)搜索不到打印機(jī),這可能是因?yàn)槲覀儧]有正常連接的問題,可以嘗試檢查連接并通過手動(dòng)連接的方法來連接。 方法一 1、如果我們是有線打印機(jī)搜索不到,那么大概率是硬件問題。 2、

    2024年02月04日
    瀏覽(20)
  • Win10系統(tǒng)電腦連接打印機(jī)的操作方法教學(xué)

    Win10系統(tǒng)電腦連接打印機(jī)的操作方法教學(xué)

    Win10系統(tǒng)電腦連接打印機(jī)的操作方法教學(xué)分享,很多用戶在辦公的時(shí)候都會需要使用到打印機(jī)。用用戶自己購買了打印機(jī)之后,不懂怎么去連接自己的電腦來進(jìn)行使用的方法,接下來我們一起來看看Win10系統(tǒng)電腦連接打印機(jī)的操作方法分享吧。 Win10連接打印機(jī)的方法 1、首先我

    2024年02月08日
    瀏覽(32)
  • WINDOWS(WIN11)通過IP添加網(wǎng)絡(luò)打印機(jī)

    WINDOWS(WIN11)通過IP添加網(wǎng)絡(luò)打印機(jī)

    點(diǎn)擊添加設(shè)備 點(diǎn)擊手動(dòng)添加 使用IP地址或主機(jī)名添加打印機(jī) ?選擇TCP/IP設(shè)備,輸入打印機(jī)地址 如果有正確驅(qū)動(dòng)就安裝,沒有就取消。? 通過手動(dòng)設(shè)置添加本地打印機(jī)或網(wǎng)絡(luò)打印機(jī) ?選擇端口 如果有打印機(jī)IP,就“使用現(xiàn)有的端口”;如果沒有,就選擇“創(chuàng)建新端口”。 根據(jù)

    2024年03月21日
    瀏覽(24)
  • win11連接共享打印機(jī)錯(cuò)誤0x00000709

    win11連接共享打印機(jī)錯(cuò)誤0x00000709

    連接共享打印機(jī)出現(xiàn)錯(cuò)誤0x00000709是常見的打印機(jī)錯(cuò)誤了,但是用戶升級到win11系統(tǒng)之后還遇到了同樣的問題,這該如何解決?今天小編就給大家?guī)碓敿?xì)的解決辦法,一起來看看。 方法一、卸載補(bǔ)丁 Win10卸載有問題的補(bǔ)丁KB5006667或KB5006670;win11回退到舊版本。 方法二、文件替

    2024年02月04日
    瀏覽(98)
  • win11 22H2 連接共享打印機(jī)失敗

    win11 22H2 連接共享打印機(jī)失敗

    1.原因:這個(gè)問題應(yīng)該是更新Windows系統(tǒng)導(dǎo)致! 2.解決方法:管理員身份打開cmd,執(zhí)行下面三條指令,作用是修改注冊表. 這里是引用[微軟官方疑難解答](Windows 11用于打印的 RPC 連接更新 - Windows Client | Microsoft Learn)

    2024年02月11日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包