各位coder手下留情

     /// <summary>
        /// 判断是否连接打印机
        /// </summary>
        public bool CheckPrinter()
        {
            //取得默认打印机名
            PrintDocument pdoc = new PrintDocument();
            string printerName1 = pdoc.PrinterSettings.PrinterName;

            ManagementScope scope = new ManagementScope(@"\root\cimv2");
            scope.Connect();

            // Select Printers from WMI Object Collections
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");

            string printerName = "";
            foreach (ManagementObject printer in searcher.Get())
            {
                printerName = printer["Name"].ToString().ToLower();
                )
                {

                    if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
                    {
                        switch (XtraMessageBox.Show("默认打印机未连接或出错", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error))
                        {
                            case DialogResult.Retry:
                                CheckPrinter();
                                break;
                        }
                        return false;
                        // printer is offline by user

                    }
                    else
                    {
                        // printer is not offline

                        return true;
                    }
                }
            }
            switch (XtraMessageBox.Show("默认打印机未连接或出错", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error))
            {
                case DialogResult.Retry:
                    CheckPrinter();
                    break;
            }
            return false;
        }

        /// <summary>
        /// 判断打印机状态,传Exception
        /// </summary>
        /// <param name="ex">Exception</param>
        public void ErrerPrint(Exception ex)
        {
            PrintQueue pq = LocalPrintServer.GetDefaultPrintQueue();
            string PrintStaticText = "";
            bool isPrintErrer = false;

            switch (pq.QueueStatus)
            {
                case PrintQueueStatus.Busy:
                    PrintStaticText = "打印机正忙";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.DoorOpen:
                    PrintStaticText = "打印机上的门已打开";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Error:
                    PrintStaticText = "由于错误情况,打印机无法打印。";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.IOActive:
                    PrintStaticText = "打印机正在与打印服务器交换数据";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Initializing:
                    PrintStaticText = "打印机正在初始化";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.ManualFeed:
                    PrintStaticText = "打印机正在等待用户将打印介质放入手动送纸盒";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.NoToner:
                    PrintStaticText = "打印机墨粉用完";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.None:
                    PrintStaticText = "未指定状态。";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.NotAvailable:
                    PrintStaticText = "状态信息不可用";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Offline:
                    PrintStaticText = "打印机处于脱机状态。";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.OutOfMemory:
                    PrintStaticText = "打印机无可用内存";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.OutputBinFull:
                    PrintStaticText = "打印机的输出纸盒已满";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.PagePunt:
                    PrintStaticText = "打印机不能打印当前页";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.PaperJam:
                    PrintStaticText = "打印机卡纸";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.PaperOut:
                    PrintStaticText = "打印机中没有或已用完当前打印作业所需的纸张类型";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.PaperProblem:
                    PrintStaticText = "打印机中的纸张导致未指定的错误情况";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Paused:
                    PrintStaticText = "打印队列已暂停";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.PendingDeletion:
                    PrintStaticText = "打印队列正在删除打印作业";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.PowerSave:
                    PrintStaticText = "打印机处于节能模式";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Printing:
                    PrintStaticText = "设备正在打印";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Processing:
                    PrintStaticText = "设备正在执行某种工作,如果此设备是集打印机、传真机和扫描仪于一体的多功能设备,则不需要打印";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.ServerUnknown:
                    PrintStaticText = "打印机处于错误状态";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.TonerLow:
                    PrintStaticText = "打印机中只剩下少量墨粉";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.UserIntervention:
                    PrintStaticText = "打印机要求通过用户操作来更正错误情况";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.Waiting:
                    PrintStaticText = "打印机正在等待打印作业";
                    isPrintErrer = true;
                    break;
                case PrintQueueStatus.WarmingUp:
                    PrintStaticText = "打印机正在预热";
                    isPrintErrer = true;
                    break;
            }

            if (isPrintErrer)
            {
                WriteLog.SetString(PrintStaticText);
                XtraMessageBox.Show(PrintStaticText, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            if (ex.Message == "The net printer is unavailable.")
            {
                XtraMessageBox.Show("网络打印机不可用", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
                WriteLog.SetString(ex.Message);
            }
            else
            {
                WriteLog.SetException(ex);
            }
        }

C# 有关打印机的连接判断...随便看看的更多相关文章

  1. Android 网络连接判断与处理

    Android网络连接判断与处理  获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="and ...

  2. Android网络连接判断与处理

    博客分类: Android 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android ...

  3. 打印机驱动冲突和端口异常:win10更新部分补丁后,打印机本地连接(连接打印机的主机)可以打印,其他共享网络中的电脑可以连接到打印机,但不能打印——解决方案

    一.问题描述: 1.A(WIN10系统)表示连接打印机的电脑,P表示打印机(型号:惠普127M),B(WIN7系统)表示局域网中的电脑 2.A升级后部分补丁后,A可以使用打印机P打印文件,B显示可以连 ...

  4. android 网络连接判断

    Android 网络判断类,用来判断网络状态 使用方法: (1)先初始化 //初始化网络状态检测类 NetworkStateManager.instance().init(this); (2)判断是否 ...

  5. Android网络连接判断与检测

    转自: http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html 本文主要内容: 1)判断是否有网络连接 2)判断WIFI网络是否 ...

  6. Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端

    最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...

  7. C# 打印机连接状态判断

    原文:https://www.cnblogs.com/Old-Fish/p/6258118.html /// <summary> /// 判断是否连接打印机 /// </summar ...

  8. Win8 app判断网络连接状态

    Win8 app判断网络连接状态 NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged; ...

  9. Win10 64位连接LJM1005打印机局域网访问

    除了网上常见的开Guest用户之类需要额外三个设置 (1)安装LJM1005驱动LJM1005_Full_Solution (2)设置打印机共享和安全中的everyone全部勾选(解决能看到打印机无法 ...

随机推荐

  1. XproerIM V2开源,基于XproerUI引擎构架

    资源下载:XproerIM源代码(访问密码:2e47),imServer(访问密码 364c), 技术交流群:6259765 技术支持:3040217208 咨询邮箱:2190615607@qq.co ...

  2. CLASSIC VS INTERGRATED IN IIS 7.0

    Classic mode (the only mode in IIS6 and below) is a mode where IIS only works with ISAPI extensions ...

  3. jahshaka 2.0 环境配置

    经过断断续续的探索,终于在自己的win7电脑上编译并运行成功了jahshaka源代码. 环境配置: 首先,jahshaka 2.0提供了vs 2003 和vs 2005两个版本的工程文件,还需要qt3 ...

  4. 机器学习中的范数规则化之(一)L0、L1与L2范数

    L1正则会产生稀疏解,让很多无用的特征的系数变为0,只留下一些有用的特征 L2正则不让某些特征的系数变为0,即不产生稀疏解,只让他们接近于0.即L2正则倾向于让权重w变小.见第二篇的推导. 所以,样本 ...

  5. Python导入模块出现“no module named **”可能是这样的原因

    因为Python中其他文件中海油和这些模块一样的取名,这个时候Python就找不到到底是哪个文件了,所以只需要将其中一个文件的名字修改成不一样的就可以了.

  6. Linux下JDK、Tomcat

    1.JDK的安装   1. 下载JDK 先查看Linux系统是多少位(32位/64位):getconf  LONG_BIT.再从JDK官网(http://www.oracle.com/technetw ...

  7. CentOS 安装rz和sz命令

    虚机装了CentOS7.2最小版本, 结果上去后发现rz命令不能用 yum install lrzsz  安装完成:

  8. LVS简单实现NAT&DR模型

    LVS:Linux Virtual Server  一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分 ...

  9. A. Writing Code 完全背包

    http://codeforces.com/contest/543/problem/A 一开始这题用了多重背包做,结果有后效性. 就是如果6,这样拆分成 1 + 2 + 3的,那么能产生3的就有两种情 ...

  10. MSSQL附加数据库5120错误(拒绝访问)处理方法

    一. 右键需要附加的数据库文件,弹出属性对话框,选择安全标签页. 找到Authenticated Users用户名. 如未找到,进行Authenticated Users用户名的添加. 二. 添加Au ...