C# 有关打印机的连接判断...随便看看
各位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# 有关打印机的连接判断...随便看看的更多相关文章
- Android 网络连接判断与处理
Android网络连接判断与处理 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="and ...
- Android网络连接判断与处理
博客分类: Android 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android ...
- 打印机驱动冲突和端口异常:win10更新部分补丁后,打印机本地连接(连接打印机的主机)可以打印,其他共享网络中的电脑可以连接到打印机,但不能打印——解决方案
一.问题描述: 1.A(WIN10系统)表示连接打印机的电脑,P表示打印机(型号:惠普127M),B(WIN7系统)表示局域网中的电脑 2.A升级后部分补丁后,A可以使用打印机P打印文件,B显示可以连 ...
- android 网络连接判断
Android 网络判断类,用来判断网络状态 使用方法: (1)先初始化 //初始化网络状态检测类 NetworkStateManager.instance().init(this); (2)判断是否 ...
- Android网络连接判断与检测
转自: http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html 本文主要内容: 1)判断是否有网络连接 2)判断WIFI网络是否 ...
- Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端
最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...
- C# 打印机连接状态判断
原文:https://www.cnblogs.com/Old-Fish/p/6258118.html /// <summary> /// 判断是否连接打印机 /// </summar ...
- Win8 app判断网络连接状态
Win8 app判断网络连接状态 NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged; ...
- Win10 64位连接LJM1005打印机局域网访问
除了网上常见的开Guest用户之类需要额外三个设置 (1)安装LJM1005驱动LJM1005_Full_Solution (2)设置打印机共享和安全中的everyone全部勾选(解决能看到打印机无法 ...
随机推荐
- All About Python
Part one: Learn the Basics Hello, World! print "Hello,World!" Variables and Types Python i ...
- 8.15 CSS知识点6
自定义动画 1.animation-name(动画名称) 元素所应用的动画名称,必须与规则@keyframes配合使用,因为动画名称由@keyframes定义. 语法: animation-name ...
- select标签非空验证,第一个option value=""即可
select标签非空验证,第一个option value=""即可,否则不能验证
- 调用KEditor批量上传图片
调用KEditor批量上传图片: <script charset="utf-8" src="/Keditor/kindeditor.js">< ...
- C#,委托,匿名委托,Lambda表达式
1. 委托是什么? (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型. (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象.概括的说:委托是方法的抽象. 2. 委托类型的定义: 委 ...
- Interpreter(解释器)-类行为型模式
1.意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 2.动机 如果一种特定类型的问题发生的频率足够高,那么可能就值的将该问题的各个实例表述为一个 ...
- 无cookie下载Oracle otn上的sun jdk等软件
从Oracle下载sun jdk提示:In order to download products from Oracle Technology Network you must agree to th ...
- 关于dp dip dpi px
在Android开发中,屏幕适配是一件非常让人头疼的事情.有时候在这个机型上调试的漂漂亮亮的UI界面,换一部手机就丑的不忍直视.但为了我们软件更好的用户体验,我们必须适应Android市场上形形色色的 ...
- 16.10.16学到的JAVA知识
1. 每个字节就是八位,所以每个字节的取值范围是 -128~127,它可以保存一个英文字符,包括字母,数字和英文标点.而汉字的的数量很多,一个字节没法把所有的汉字表达出来,所以汉字就是用两个字节来存 ...
- 使用guava进行对字符串的加锁
java的synchronized关键字是堆某对象加锁,但是我们当需要对某个字符串加锁怎么办 比如对同一个订单只能有一个操作,但是对其他订单的操作不影响 使用 guava包下的 Interner 类 ...