打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何用C#判断打印机工作状态

如何用C#判断打印机工作状态

方法一:
using System.DirectoryServices;
using ActiveDs;(Com 组键里的 Active DS Type Library 目录Windos\system32\activeds.tlb)

         //Printer status flags - see SDK docs for status values   (IADsPrintQueueOperations) 打印机状态
         [Flags]
         private enum PrinterStatus
         {
             Paused = 1,
             DeletePending = 2,
             Error = 3,
             PaperJam = 4,
             PaperOut = 5
         }
         private void GetPrinterStatus1()
         {
             try
             {
                 this.Cursor = Cursors.WaitCursor;
                 DirectoryEntry lPrinter = new DirectoryEntry("WinNT://192.168.1.77/Adobe PDF", null, null, AuthenticationTypes.ServerBind);
                 //Printer path
                 txtState.Text += Environment.NewLine + "Printer path:" + lPrinter.Path;
                 System.DirectoryServices.PropertyCollection lPropertyColl = lPrinter.Properties;
                 foreach (string pcName in lPropertyColl.PropertyNames)
                 {
                     txtState.Text += Environment.NewLine + pcName + ":\t" + (lPropertyColl[pcName])[0].ToString();
                 }
                 txtState.Text += Environment.NewLine + "---------------------------------";
                 // Use the PrintqueueOperations interface to contol the printer Queue
                 IADsPrintQueueOperations lPrintQueue = lPrinter.NativeObject as IADsPrintQueueOperations;
                 if (lPrintQueue != null)
                 {
                     if (lPrintQueue.Status == (int)PrinterStatus.Paused) // If paused resume else pause printer
                     {
                         lPrintQueue.Resume();
                     }
                     else
                     {
                         lPrintQueue.Pause();
                     }
                     // Use the IADsPrintJob to control individual printjobs
                     foreach (IADsPrintJob pJob in lPrintQueue.PrintJobs())
                     {
                         txtState.Text += Environment.NewLine + pJob.Description + pJob.Name;
                         IADsPrintJobOperations pjo = pJob as IADsPrintJobOperations;
                         txtState.Text += Environment.NewLine + pjo.Name;
                         // Use IADsPrintJob.Name as arg. to remove the job from the queue
                         //删除打印列表里的庸余打印任务
                         //lPrintQueue.PrintJobs().Remove(pJob.Name);
                     }
                 }
                 lPrinter.Dispose();
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message);
             }
             finally
             {
                 this.Cursor = Cursors.Default;
             }
         }


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
delphi中怎么样用Delphi控制Windows的默认打印机。
电脑键盘上所有英文的意思,你懂吗?
用C++ Builder编程监控打印机队列状态
打印机维修250例
各种品牌条码打印机测纸和恢复出厂设置
TSC条码打印机常见故障及解决方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服