获取打印机当前的状态

 /// <summary>
        /// 获取打印机的当前状态
        /// </summary>
        /// <param name="PrinterDevice">打印机设备名称</param>
        /// <returns>打印机状态</returns>
        public static PrinterStatus GetPrinterState(string PrinterName)
        {
            PrinterStatus vStatus = PrinterStatus.Offline;
            if (!StringHelper.IsEmpty(PrinterName))
            {
                try
                {
                    string path = @"win32_printer.DeviceId='" + PrinterName + "'";
                    ManagementObject printer = new ManagementObject(path);
                    printer.Get();


                    bool isOffline = StringHelper.GetBoolean(printer.Properties["WorkOffline"].Value);
                    if (!isOffline)
                    {
                        var baseStatus = (PrinterStatusBase)Enum.Parse(typeof(PrinterStatusBase), printer.Properties["PrinterStatus"].Value.ToString());
                        if (baseStatus == PrinterStatusBase.Printing)
                        {
                            vStatus = PrinterStatus.Printing;
                        }
                        else if (baseStatus == PrinterStatusBase.NotFound)
                        {
                            vStatus = PrinterStatus.Offline;
                        }
                        else if (baseStatus == PrinterStatusBase.Ready)
                        {
                            vStatus = PrinterStatus.Ready;
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.WriteLog(ex);
                }


            }
            return vStatus;
        }


        /// <summary>
        /// 打印机状态
        /// </summary>
        public enum PrinterStatusBase
        {
            NotFound,
            OtherState,
            Unknown,
            Ready,
            OnPrint,
            Prepare,
            StopPrint,
            Printing,
            Offline,
        }


        /// <summary>
        /// 打印机状态
        /// </summary>
        [Flags]
        public enum PrinterStatus
        {
            /// <summary>
            /// 打印机就绪
            /// </summary>
            Ready = 0x00000000,


            Busy = 0x00000200,
            Open = 0x00400000,
            Error = 0x00000002,
            Initializing = 0x00008000,
            Io_Active = 0x00000100,
            Manual_Feed = 0x00000020,
            No_Toner = 0x00040000,
            Not_Available = 0x00001000,
            Offline = 0x00000080,
            Out_Of_Menory = 0x00200000,
            Output_Bin_Full = 0x00000800,
            Page_Punt = 0x00080000,
            Paper_Jam = 0x00000008,
            Paper_Out = 0x00000010,
            Paper_Problem = 0x00000040,
            Paused = 0x00000001,
            Pending_Deletion = 0x00000004,


            /// <summary>
            /// 打印中
            /// </summary>
            Printing = 0x00000400,
            Processing = 0x00004000,
            Toner_Low = 0x00020000,
            User_Intervention = 0x00100000,
            Waiting = 0x20000000,
            Warming_Up = 0x00010000,
            Other = 0x00000005
        }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这个月太忙没时间看C++

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值